Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Rejestracja i logowanie itd.
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
piotrooo89
pewnie nie masz zarejestrowanej tej sesji i dlatego...
MateuszS
i? ;D

Pomozesz zmodyfikowac kod? Nigdy na sesjach nie operowałem. sad.gif What I should do?
piotrooo89
pokaż jak robisz logowanie, wraz z rejestracją sesji to dość ważne.
MateuszS
Wszystko co mam

logowanie.php (system logowania)
Kod
<html>
<head>
    <title>Logowanie</title>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
</head>

<body bgcolor="black" alink="white" vlink="white" link="white">

    <a href="index.html"> Powrót </a>

<form action="logowanie.php" method="POST">
<center>

<br /><br /><br />
<table border="1" cellpadding="13">
    <tr>
        <td>
        <center>
            <font size="5" face="arial" color="blue">Zaloguj się</font>
        </center> <br /><br />
            <p>
            <font size="4" face="Verdana" color="white">
            <input type="text" size="15" name="uzytkownik" maxlength="12" /> Nazwa użytkownika </p>
            <p>
            <input type="password" size="15" name="haslo" maxlength="12" /> Hasło </p><br /><br />
            <center>
            <input type="submit" value=" Zaloguj ">
            </center>
            </p>
            
        
        
        </td>
    </tr>    
</table>
</center>
</form>

</body>
</html>


rejestracja.php (rejestrowanie uzytkownika w bazie)
Kod
<html>
<head>
    <title>Rejestracja</title>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
</head>
<body bgcolor="black" alink="white" vlink="white" link="white">    

<center>
<br /><br /><br /><br /><br />
<table>
    <tr>
        <td>
        <center>
        <font color="red">

<?php

include("baza.php");

$login = $_POST['uzytkownik'];
$haslo = $_POST['haslo'];
$haslo1 = $_POST['rehaslo'];

$haslo=mysql_escape_string(htmlspecialchars($haslo));

$zapytanie = mysql_query("INSERT INTO `tabela` (login,haslo) VALUES ('$login','$haslo')") or die (mysql_error());

if($haslo != $haslo1 or empty($haslo) or empty($haslo1) or empty($login))
{
    echo 'Wprowadziłeś niepoprawne dane! <br />';
    echo '<center><a href="rejestracja.html">Spróbuj ponownie</a></center>';
}    

elseif ($zapytanie)
{
    echo 'Brawo. Teraz możesz się zalogować!<br />';
    echo '<center><a href="index.html">Powrót</a></center>';
}


?>
        
        </font>
        </center>
        </td>
    </tr>
</table>
</center>    
</body>
</html>


ankieta.php (dostęp wyłącznie po zalogowaniu)
Kod
<?php
    ob_start();
    session_start();

    if(!session_is_registered("uzytkownik"))
    {
        header("Location: logowanie.php");
    }

    ob_end_flush();
?>

<html>
<head>
    <title>Das testen!</title>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />    
</head>
<body alink="white" vlink="white" link="white" bgcolor="black">    
<form action="wynik.php" method="POST">

    <center>
    <font size="6" face="verdana" color="white">Test na "mondrość". Zapraszam</font>
    </center>
    
    <font color="white">
        <p>1. Co jesz gdy jesteś głodny?</p>
        <ol>
            <li><input type="radio" name="p1" value="1" />
                Zupę.</li>
            <li><input type="radio" name="p1" value="2" />    
                Cokolwiek.</li>
            <li><input type="radio" name="p1" value="3" />
                Nie jem nic.</li>
        </ol>
            
        <p>2. Ile wiatraków jest w Holandii?</p>
        <ol>
            <li><input type="radio" name="p2" value="1" />
            A lot.</li>
            <li><input type="radio" name="p2" value="2" />
            4769 wiatraków wszystkich rodzajów.</li>
            <li><input type="radio" name="p2" value="3" />
            Nikt ich liczby nie oszacował.</li>
        </ol>    
        
        <p>3. Jaka z poniższych gier jest najbrutalniejsza?</p>
        <ol>
            <li><input type="radio" name="p3" value="1" />
            Kółko i krzyżyk.</li>
            <li><input type="radio" name="p3" value="2" />
            The Sims 2: Zestaw Świąteczny.</li>
            <li><input type="radio" name="p3" value="3" />
            Gra w karty</li>
        </ol>    


</form>
</body>
</html>


Do tego są proste formularze HTML. To wszystko co mam nic więcej nie mam, no jeszcze mogę zrzucić backupa bazy SQL. Nic wiecej nie mam
piotrooo89
popraw logowanie tak jak ja podałem na blogu. musisz to na jednej stronie zrobić bo inaczej będzie się "zapętlać". tam masz wszystko napisane...


//EDIT
zrobiłem Ci to
  1. <?php
  2.    ob_start();
  3.    session_start();
  4.    $login = $_POST['loguj'];
  5.    if($login)
  6.    {
  7.        $user = $_POST['uzytkownik'];
  8.        $haslo = $_POST['haslo'];
  9.  
  10.        $sql = mysql_query("SELECT * FROM admin WHERE user='$user' AND pass='$haslo'");
  11. if(@mysql_num_rows($sql))
  12.        {
  13.            session_register("uzytkownik");
  14.            header("Location: ankieta.php");
  15.        exit;
  16.        }
  17.        else
  18.        {
  19.            $message="Nieprawidłowa nazwa użytkownika lub hasło.";
  20.        }
  21.    }
  22.    ob_end_flush();
  23. ?>
  24. <html>
  25. <head>
  26.    <title>Logowanie</title>
  27.    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
  28. </head>
  29.  
  30. <body bgcolor="black" alink="white" vlink="white" link="white">
  31.  
  32.    <a href="index.html"> Powrót </a>
  33.  
  34. <form action="logowanie.php" method="POST">
  35. <center>
  36.  
  37. <br /><br /><br />
  38. <table border="1" cellpadding="13">
  39.    <tr>
  40.        <td>
  41.        <center>
  42.            <font size="5" face="arial" color="blue">Zaloguj się</font>
  43.        </center> <br /><br />
  44.            <p>
  45.            <font size="4" face="Verdana" color="white">
  46.            <input type="text" size="15" name="uzytkownik" maxlength="12" /> Nazwa użytkownika </p>
  47.            <p>
  48.            <input type="password" size="15" name="haslo" maxlength="12" /> Hasło </p><br /><br />
  49.            <center>
  50.            <input type="submit" value=" Zaloguj ">
  51.            </center>
  52.            </p>
  53.        </td>
  54.    </tr>    
  55. </table>
  56. </center>
  57. </form>
  58. </body>
  59. </html>


pozmieniaj sobie tylko nazwy tabel i ewentualnie kluczy w $_POST.
MateuszS
Kod
<html>
<head>
    <title>Logowanie</title>
</head>
<body vlink="white" alink="white" link="white" bgcolor="black">    
<br /><br /><br /><br />
<center>
<font color="blue">

<?php

ob_start();
session_start();

include("baza.php");

$login = $_POST['uzytkownik'];
$haslo = $_POST['haslo'];

$haslo=mysql_escape_string(htmlspecialchars($haslo));

$zapytanie = mysql_query("SELECT login,haslo
FROM `tabela`
WHERE (login='$login') AND (haslo='$haslo')");

if(!session_is_registered("uzytkownik"))
{
    header("Location: logowanie.php");
}
exit;

if (empty($login) or empty($haslo))
{
    echo 'Nie możesz się zalogować z pustych pól<br />';
    echo '<center><a href="logowanie.html">Spróbuj ponownie</a></center>';
}

elseif (!$zapytanie)
{
    echo 'Wprowadzone przez Ciebie dane są nie prawidłowe<br />';    
    echo '<center><a href="logowanie.html">Spróbuj ponownie</a></center>';
}
elseif ($zapytanie)
{
    echo 'k';
}    




ob_end_flush();


?>

</font>
</center>

</body>
</html>


Nie działa. Nie wiem co mam robić... mówicie do mnie ale to jakos nie dociera... ja chyba potrzebuje jakiegoś gotowca. Dało by sie zmodyfikowac te moje powyzszy kody (z poprzedniego postu) tak zeby to dzialalo?

Podziwiam Cie Piotrooo89 i doceniam twoją pomoc jednak, mimo dokładnego opisu w Blogu itp. to dalej nie chce działać.

Przynajmniej headery działaja juz ;]
piotrooo89
ale Twój przykład nie jest taki jak mój... przeanalizuj go na spokojnie... nie możesz po zarejestrowaniu sesji przeładowywać z powrotem na stronę logowania, musisz to zrobić nas stronę docelową tzn w Twoim wypadku ankieta.php. popatrz również na układ kodu nie jest on przypadkowy. pomyśl trochę sam.
MateuszS
Myslalem kombinowalem.

logowanie.php - NIE DZIALA
Kod
<?php

ob_start();
session_start();

include("baza.php");

$login = $_POST['uzytkownik'];
$haslo = $_POST['haslo'];

$haslo=mysql_escape_string(htmlspecialchars($haslo));

$zapytanie = mysql_query("SELECT login,haslo
FROM `tabela`
WHERE (login='$login') AND (haslo='$haslo')");

if ($zapytanie)
{
    session_register("uzytkownik");
    header("Location: ankieta.php");

}

else
{    
    echo 'Wprowadzone przez Ciebie dane są nie prawidłowe<br />';    
    echo '<center><a href="logowanie.html">Spróbuj ponownie</a></center>';
}

ob_end_flush();


?>




ankieta.php
Kod
<?php
    ob_start();
    session_start();

    if(!session_is_registered("uzytkownik"))
    {
        header("Location: logowanie.php");
    }
    ob_end_flush();
?>


Co nie wpisze w loginie czy hasle i tak mnie przezuci do ankiety. Myslenie i kombinowanie nie pomoglo, analizowalem twoj kod, zrobilem co moglem.... Jest jeszcze chyba gorzej niz bylo sad.gif
bobo168
A po co Ci te nawiasy w "WHERE" ?
MateuszS
To nie ma nic do rzeczy, tak ma byc i tak dziala smile.gif reszta nie dziala, warunek nie dziala itd ;/

Blad jest z uzyciem sesji na pewno i moze header() ale nie wiem jak to poprawic bo nie mam z tym doswiadczenia, troche kombinowalem ale wyszlo jeszcze gorzej
Tajgeer
Kod
<?php
       ob_start();
       session_start();
    
       include("baza.php");
      
       $login = $_POST['uzytkownik'];
       $haslo = $_POST['haslo'];
      
       $haslo=mysql_escape_string(htmlspecialchars($haslo));
      
       $zapytanie = mysql_query("SELECT `haslo` FROM `tabela` WHERE `login`='$login'") or die("Podany użytkownik nie istnieje");
       $wynik = mysql_fetch_row($zapytanie);
       $password = $wynik[0];
      
       if ($haslo==$password) {

           session_register("uzytkownik");
           header("Location: ankieta.php");
      
       } else {  
    
           echo 'Wprowadzone przez Ciebie dane są nie prawidłowe';    
           echo '<center><a href="logowanie.html">Spróbuj ponownie</a></center>';
       }
      
       ob_end_flush();
      
      
       ?>


Spróbuj z takim skryptem.
MateuszS
Nie przyjmuje poprawnych passow. Poza tym nawet nie wpisujac nic mozna sie zalogowac na ankiete... ;/
Tajgeer
Uaktualniłem skrypt w moim wcześniejszym poście. Sprawdź.
MateuszS
Po zalogowaniu sie i gdy biore np wstecz i znowu zaloguj to moge logowac sie bez hasla bez niczego... Przdalo by sie jakies wylogowanie albo cos
Tajgeer
Nie lepiej zrobić logowanie w oparciu o ciasteczka (jako wartość podawany jest na przykład dynamicznie generowany ciąg znaków, który znajduje się również w bazie danych) ?
Później jeśli ktoś wejdzie na stronę logowania to sprawdzamy obecność ciasteczka - jeśli istnieje i dane się zgadzają (tzn wartość cookie oraz wartość podana w bazie danych) to przekierować na ankieta.php (tam również dodać sprawdzanie żeby ktoś nie wszedł bezpośrednio), jeśli nie - pokazać formularz logowania.
Tak samo w pliku ankieta.php. Jeśli ciasteczko istnieje i jego wartość zgadza się z wartością wpisaną w bazie danych - pokazać ankietę. W przeciwnym wypadku przekierowanie na stronę logowania i wio winksmiley.jpg
MateuszS
Walnalem kod HTML w PHP w logowanie.php tak zeby od razu po zalogowaniu przenioslo na ankiete. Jak sie wszystko uda wykonczyc wklepie tu adres strony a potem bede mogl przerabiac swobodnie z sesjami itp.

Nie potrafie tego jeszcze, w oparciu o cookies ;]
Tajgeer
Czas najwyższy poczytać trochę o cookie. Odpowiednio napisany skrypt logowania (np. w ten sposób, jaki ja podałem) okazuje się bardzo bezpieczny, jeśli dodatkowo damy opcję, że przy każdym wylogowaniu z serwisu generowany jest nowy ciąg znaków, następnie zapisywany w bazie danych i przy kolejnym logowaniu ustawiany jako wartość ciasteczka.
MateuszS
Tak bedzie trzeba zrobic smile.gif Puki co sprobuje jakos dokonczyc to co robie... winksmiley.jpg

Jest mozliwe takie cos ze np Loguje sie nickiem: Mateusz a potem przy porownywaniu wynikow z ankiety i punktacji pisalo "Mateusz - Punktow 10" gdzie Mateusz to login.

questionmark.gif

I jeszcze jedno pytanie:

Jak zrobić żeby koleś bez zalogowania nie mogl widziec strony? Pododawalem te sesje itd ale to nic nie daje....
Tajgeer
Kod
<?php
if(isset($_SESSION['uzytkownik'])) {

// kod dla użytkownika, który jest zalogowany

} else {

// kod dla niezalogowanego

}
?>
MateuszS
A wiecie co tu może być źle?

Kod
$zapytanie = mysql_query("UPDATE tabela SET punktacja='$wynik' WHERE login='$_SESSION[uzytkownik]',haslo='$_SESSION[haslo]',punktacja='$wynik'");


Pisze ze dodalo rekordy ale po sprawdzeniu w bazie nic sie nie zmienilo... Jak cos moge podac wiecej danych

Tajgeer, coś nie tak jest bo cały czas wywala mi kod dla niezalogowanego mimo że się probowalem zalogowac. Na pewno to jest dobry kod
?
Tajgeer
Może tak ?

Kod
<?php
$login = $_SESSION['uzytkownik'];
$haslo = $_SESSION['haslo'];
$zapytanie = mysql_query("UPDATE `tabela` SET `punktacja`='$wynik' WHERE `login`='$login' AND `haslo`='$haslo'");
?>
phpion
@MateuszScierka:
Do łączenia warunków używa się AND a nie przecinka. Możliwe, że wystarczy poprawić tylko to.
MateuszS
Tajgeer probowalem juz tak. Jednak wtedy wkradl mi sie byk. Twoj kod pieknie to naprawił. Dziekuje.

Phpion: owszem, mój błąd dzięki.


Teraz tylko została kwestia tego że:
1. Po zalogowaniu przenosi mnie do ankieta.php gdzie mam wypełnić ją. Chcę aby zawsze gdy ktoś bez logowania wlepia ten link http://..../ankieta.php zawsze go przenosilo do strony logowania z "tabliczką" : Aby obejrzec ta witryne musisz sie zalogowac. Wczesniejszy kod Tajgeera nie bardzo chcial zadzialac albo ja go nie potrafilem uzyc.

logowanie.php
Kod
<?php
ob_start();

session_start();

include("baza.php");

$login = $_POST['uzytkownik'];
$haslo = $_POST['haslo'];

$_SESSION['uzytkownik'] = $login;
$_SESSION['haslo'] = $haslo;

$haslo = mysql_escape_string(htmlspecialchars($haslo));

$zapytanie = mysql_query("SELECT login,haslo
FROM `tabela`
WHERE (login='$login') AND (haslo='$haslo')");

if (empty($login) or empty($haslo))
{    
    echo '<br /><br/>';
    echo '<body bgcolor="black" alink="white" vlink="white" link="white"><font color="white"><center>Wprowadzone przez Ciebie dane są nie prawidłowe<br />';    
    echo '<center><a href="logowanie.html">Spróbuj ponownie</a></center>';
}

elseif ($zapytanie)
{
    session_register("uzytkownik");
    header("Location: ankieta.php");

}



ob_end_flush();


?>

</form>
</font>
</center>

</body>
</html>



ankieta.php
Kod
<html>
<head>
    <title>Das testen!</title>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />    
</head>
<body alink="white" vlink="white" link="white" bgcolor="black">    
<form action="wynik.php" method="POST">


    <center>
    <font size="6" face="verdana" color="white">Test na "mondrość". Zapraszam</font>
    </center>

<table>
<tr>
    <td width="500">
    
    <font color="white">
        <p>1. Co jesz gdy jesteś głodny?</p>
        <ol>
            <li><input type="radio" name="p1" value="1" />
                Zupę.</li>
            <li><input type="radio" name="p1" value="2" />    
                Cokolwiek.</li>
            <li><input type="radio" name="p1" value="3" />
                Nie jem nic.</li>
        </ol>
            
        <p>2. Ile wiatraków jest w Holandii?</p>
        <ol>
            <li><input type="radio" name="p2" value="1" />
            A lot.</li>
            <li><input type="radio" name="p2" value="2" />
            4769 wiatraków wszystkich rodzajów.</li>
            <li><input type="radio" name="p2" value="3" />
            Nikt ich liczby nie oszacował.</li>
        </ol>    
        
        <p>3. Jaka z poniższych gier jest najbrutalniejsza?</p>
        <ol>
            <li><input type="radio" name="p3" value="1" />
            Kółko i krzyżyk.</li>
            <li><input type="radio" name="p3" value="2" />
            The Sims 2: Zestaw Świąteczny.</li>
            <li><input type="radio" name="p3" value="3" />
            Gra w karty</li>
        </ol>    

        <p>4. Największa planeta w galaktyce Drogi Mlecznej to:</p>
        <ol>    
            <li><input type="radio" name="p4" value="1" />    
            Księżyc.</li>
            <li><input type="radio" name="p4" value="2" />
            Nie wiadomo.</li>
            <li><input type="radio" name="p4" value="3" />
            Jowisz.</li>
        </ol>    
            
        <p>5. Prosta przecięta drugą prostą tworzą 4:</p>
        <ol>    
            <li><input type="radio" name="p5" value="1" />    
            Odcinki.</li>
            <li><input type="radio" name="p5" value="2" />
            Proste.</li>
            <li><input type="radio" name="p5" value="3" />
             Proste półproste.</li>
        </ol>    
        
        <p>6. Ta głupia strona jest po to by:</p>
        <ol>    
            <li><input type="radio" name="p6" value="1" />    
            Bo ma być</li>
            <li><input type="radio" name="p6" value="2" />
            Nie wiadomo.</li>
            <li><input type="radio" name="p6" value="3" />
            Bo tak mi się zachciało.. tzn mu.</li>
        </ol>    
        
        </font>
        
        </td>
        <td width="500">
            
            <font color="white">
        
        <p>7. 2 plus 2 razy 2 = x gdzie:</p>
        <ol>    
            <li><input type="radio" name="p7" value="1" />    
            x = 8</li>
            <li><input type="radio" name="p7" value="2" />
            x:{5;7}</li>
            <li><input type="radio" name="p7" value="3" />
            x = 0</li>
        </ol>
        
        <p>8. Co to jest "nic"? </p>
        <ol>    
            <li><input type="radio" name="p8" value="1" />    
            Pół litra na dwóch.</li>
            <li><input type="radio" name="p8" value="2" />
            Pół litra na siebie.</li>
            <li><input type="radio" name="p8" value="3" />
            Brak czegokolwiek.</li>
        </ol>
        
        <p>9. Jetseś pilotem samolotu. W łodzi wsiadło 46 osób, a wysiadło 17.W poznaniu wysiadło 9. Ile pilot ma lat?</p>
        <ol>
            <li><input type="radio" name="p9" value="1" />    
            100.</li>
            <li><input type="radio" name="p9" value="2" />
            A co to pilot?</li>
            <li><input type="radio" name="p9" value="3" />
            Tyle co ja.</li>
        </ol>
        
        <p>10. Co mówi kasa sklepowa do kalkulatora? </p>
        <ol>
            <li><input type="radio" name="p10" value="1" />    
            Możesz na mnie liczyć.</li>
            <li><input type="radio" name="p10" value="2" />
            Jesteś cool.</li>
            <li><input type="radio" name="p10" value="3" />
            Czy ty myślisz?</li>    
        </ol>
        
        <p>11. Ile buraków wejdzie do litrowego słoika?</p>
        <ol>
            <li><input type="radio" name="p11" value="1" />    
            Zależy jakie buraki.</li>
            <li><input type="radio" name="p11" value="2" />
            10.</li>
            <li><input type="radio" name="p11" value="3" />
            Mniej niż 0</li>
        </ol>

        <p>12. Co robi zapalony internauta, jak pozna fajną dziewczynę?</p>
        <ol>
            <li><input type="radio" name="p12" value="1" />    
            Invituje go do Party lub Raid Group.</li>
            <li><input type="radio" name="p12" value="2" />
            Dodaje ją do ulubionych</li>
            <li><input type="radio" name="p12" value="3" />
            Wchodzą na kurnik.pl i grają w kalambury.</li>
        </ol>        
    

    </td>
    </tr>
</table>    
<br />
<center><input type="submit" value="Porównaj wyniki" size="15" /></center>

</form>
</body>
</html>


+ jeszcze

Kod
<?php

ob_start();
include("baza.php");

$zapytanie = mysql_query("SELECT login,punktacja FROM tabela");
    echo '<center><table border="1">';
while ($row = mysql_fetch_assoc($zapytanie))
{
    echo '<tr>';
    echo '<td>'.$row['Nick'].'</td>';
    echo '<td>'.$row['Punktacja'].'</td>';
    echo '</tr>';
}
echo '</table>';
ob_end_flush();

?>


Gdzie popełniłem błąd ? oO

Kod
    echo '<td>'.$row['Nick'].'</td>';
    echo '<td>'.$row['Punktacja'].'</td>';

To sciagnalem i troche mi sie nie podoba..

A oto co udalo mi sie dzieki temu tematowi zrobic ;]

http://www.test-inteligencja.yoyo.pl/index.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.