Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z rejestracją
Forum PHP.pl > Forum > Przedszkole
Bobik
Więc tak, napisałem skrypt rejestracji i mam z nim problem(w sumie w ogóle nie działa ;p)
Może mi ktoś powiedzieć co w nim poprawić aby działał ?


rejestruj.php
Kod
<?php
mysql_connect("xxx", "xxx", "xxx")or die("Nie można nawi±zać poł±czenia z baz±"); //poł±czenie z baz± danych
mysql_select_db("xxx")or die("Wyst±pił bł±d podczas wybierania bazy danych");

function ShowForm($komunikat=""){    //funkcja wy¶wietlaj±ca formularz rejestracyjny
    echo "$komunikat<br>";
     "<form action='rejestruj.php' method=post>";
    echo "Login: <input type=text name=login><br>";
    echo "Hasło: <input type=password name=haslo><br>";
    
echo "Powtórz hasło: <input type=password name=haslo2><br>";
    echo "E-Mail: <input type=text name=email><br>";
    echo "<input type=hidden value='1' name=send>";
    echo "<input type=submit value='Zarejestruj mnie'>";
    echo "</form>";
}




if($_POST["send"]==1){    //sprawdzanie czy formularz został wysłany
if($_POST["haslo"] ==$_POST["haslo2"] && strlen($_POST["haslo"]) >= 5) //sprawdza czy haslo jest poprawne i nie mniej niz 5 znaków.
{
echo 'Wyst±pił bł±d: wpisane hasła nie s± takie same lub zawiera ono mniej niż 5 znaków!<br> <br>';
if(!empty($_POST["login"]) && !empty($_POST["haslo"]) && !empty($_POST["email"])) //sprawdza czy nick, haslo i e-mail sa puste.;{    //oraz czy uzupełniono wszystkie dane
        if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($_POST["login"]."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!"); // sprawdzanie czy użytkownik o podanej nazwie już istnieje
    
        else{
            mysql_query("insert into users values(NULL, '".htmlspecialchars($_POST["login"])."', '".htmlspecialchars($_POST["haslo"])."', '".htmlspecialchars($_POST["email"])."')"); // zapisywanie rekordu do bazy
            echo "Rejestracja przebiegła pomy¶lnie. Możesz teraz przej¶ć do <a href='index.php'>strony głównej</a> i się zalogować.";
            }
    
    else ShowForm("Nie uzupełniono wszystkich pól!!!");
}
else ShowForm();
mysql_close(); //zamykanie poł±czenia z baz±
?>
piotrooo89
tak na 1 rzut oka na tą papkę widzę lekki błąd logiczny:
  1. <?php
  2. if($_POST["haslo"] ==$_POST["haslo2"] && strlen($_POST["haslo"]) >= 5)
  3. ?>


powinno być tak
  1. <?php
  2. if($_POST["haslo"] !=$_POST["haslo2"] && strlen($_POST["haslo"]) < 5)
  3. ?>


to tak na 1 rzut... ale trudno cokolwiek innego wywnioskować bo papka niesamowita zrób coś z tym to poszukamy innych błędów.
Spawnm
if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($_POST["login"]."'"))))
po co htmlspecialchars? dajesz go przy zapisywaniu danych aby nie było ataków xss.
wszedzie gdzie dajesz dane z form od usera filtruj przez mysql_real_escape_string();
uchroni cię to od ataków typu sql injection.

a tak po za tym napisz jaki błąd ci wyświetla:)

i chyba nie podomykałes klamer
Bobik
Popoprawiałem wszystko, po domykałem klamry i teraz mam takie problem.Wszystko jest ładnie ale po kliknięciu w przycisk "Zarejestruj" nic się nie dzieje.Nie wyskakuje w ogóle żaden błąd gdy źle coś wpisze w formularz ani nie rejestruje kiedy wszystko jest O.K .
Na tą chwile wygląda to tak

rejestruj.php

Kod
<?php
mysql_connect("localhost", "bobik", "50peritiok")or die("Nie można nawiązać połączenia z bazą");danych
mysql_select_db("bobik_User")or die("Wystąpił błąd podczas wybierania bazy danych");

function ShowForm($komunikat="")

{                                                                              
    echo "$komunikat<br>";
   "<form action='rejestruj.php' method=post>";

    echo "Login: <input type=text name=login><br>";
    echo "Hasło: <input type=password name=haslo><br>";
        echo "Powtórz hasło: <input type=password name=haslo2><br>";
    echo "E-Mail: <input type=text name=email><br>";
    echo "<input type=hidden value='1' name=send>";
    echo "<input type=submit value='Zarejestruj mnie'>";

    echo "</form>";
}




if($_POST["send"]==1){
    
}

if($_POST["haslo"] !=$_POST["haslo2"] && strlen($_POST["haslo"]) < 5)
{

echo 'Wystąpił błąd: wpisane hasła nie są takie same lub zawiera ono mniej niż 5 znaków!<br> <br>';

if(!empty($_POST["login"]) && !empty($_POST["haslo"]) && !empty($_POST["email"]))

if(mysql_num_rows(mysql_query("select * from users where user_login='".mysql_real_escape_string($_POST["login"]."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!");
    
    else{
mysql_query("insert into users values(NULL, '".mysql_real_escape_string($_POST["login"])."', '".mysql_real_escape_string($_POST["haslo"])."', '".mysql_real_escape_string($_POST["email"])."')");

echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>strony głównej</a> i się zalogować.";
}
    
else ShowForm("Nie uzupełniono wszystkich pól!!!");
}
else ShowForm();
mysql_close(); //zamykanie połączenia z bazą
?>
Spawnm
nic dziwnego tongue.gif

mysql_connect("localhost", "bobik", "50peritiok")or die("Nie można nawiązać połączenia z bazą");danych
chyba danych powinno być w (""); ...


"<form action='rejestruj.php' method=post>";
gdzie echo ?


if($_POST["send"]==1){

}
ten kod nic nie robi ~^


if($_POST["haslo"] !=$_POST["haslo2"] && strlen($_POST["haslo"]) < 5)
{
// kod..
}
mi się wydaje czy w tym zawarłeś kod rejestracji ...
to wygląda tak:
jak wpisałes źle dane to zaczynamy rejestrację...

a tak z innej beczki - albo używasz klamry albo nie, mało czytelny ten kod :/
dodatkowo pobaw się w spacje, czyli:
  1. <?php
  2. if(cos){
  3.  if(cos_innego){
  4.    //działanie
  5.  }
  6. }
  7. ?>

kod stanie się wtedy czytelniejszy smile.gif
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.