Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Rejestracja użytkownika
Forum PHP.pl > Forum > Przedszkole
Misiuu
Witajcie, mam taki kodzik rejestracji wszystko działało, a teraz gdy sie rejestruje po prostu strona sie odświeża.

  1.  
  2. <?php
  3.  
  4. session_start(); // rozpoczęcie sesji
  5.  
  6. if (!isset($_SESSION['login'])) { // dostęp dla niezalogowanego użytkownika
  7.  
  8. include 'db.php'; // połączenie się z bazą danych
  9. $tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
  10.  
  11.  
  12. if ($_POST["wyslane"]) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  13.  
  14. // filtrowanie treści wprowadzonych przez użytkownika
  15. $login = htmlspecialchars(stripslashes(strip_tags(trim($_POST["login"]))), ENT_QUOTES);
  16. $haslo = $_POST["haslo"];
  17. $haslo2 = $_POST["haslo2"];
  18. $email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);
  19. $email2 = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email2"]))), ENT_QUOTES);
  20. $imie = htmlspecialchars(addslashes(strip_tags(trim($_POST["imie"]))), ENT_QUOTES);
  21. $nazwisko = htmlspecialchars(addslashes(strip_tags(trim($_POST["nazwisko"]))), ENT_QUOTES);
  22.  
  23.  
  24. // system sprawdza czy prawidło zostały wprowadzone dane
  25. if (strlen($login) < 3 or strlen($login) > 30 or !eregi("^[a-zA-Z0-9_.]+$", $login)) {
  26. $blad++;
  27. echo '<p>Proszę poprawny wprowadzić login (od 3 do 30 znaków).</p>';
  28. } else {
  29. $wynik = mysql_query("SELECT * FROM $tabela WHERE login='$login'");
  30. if (mysql_num_rows($wynik) <> 0) {
  31. $blad++;
  32. echo '<p>Podana nazwa użytkownika została już zajęta.</p>';
  33. }
  34. }
  35. if (strlen($haslo) < 6 or strlen($haslo) > 30 ) {
  36. $blad++;
  37. echo '<p>Proszę poprawnie wpisać hasło (od 6 znaków do 30 znaków). </p>';
  38. }
  39. if ($haslo !== $haslo2) {
  40. $blad++;
  41. echo '<p> Podane hasła nie są ze sobą zgodne. </p>';
  42. }
  43. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) {
  44. $blad++;
  45. echo '<p> Proszę wprowadzić poprawnie adres email.</p>';
  46. } else {
  47. $wynik = mysql_query("SELECT * FROM $tabela WHERE email='$email'");
  48. if (mysql_num_rows($wynik) <> 0) {
  49. $blad++;
  50. echo '<p> Podany adres e-mail jest już zajęty.</p>';
  51. }
  52. }
  53. if ($email !== $email2) {
  54. $blad++;
  55. echo '<p> Podane adresy e-mail nie są ze sobą zgodne.</p>';
  56. }
  57.  
  58.  
  59. // jeżeli nie ma żadnego błedu, użytkownik zostaje zarejestronwany i wysłany do niego e-mail z linkiem aktywacyjnym
  60. if ($blad == 0) {
  61.  
  62. $haslo = md5($haslo); // zaszyfrowanie hasla
  63. $kod = uniqid(rand()); // tworzenie unikalnego kodu dla użytkownika
  64.  
  65. $wynik = mysql_query("INSERT INTO $tabela VALUES('', '$imie', '$nazwisko', '$login', '$haslo', '$email', '$kod', NOW(), '')");
  66. if ($wynik) {
  67. echo ' Zarejestrowałeś się ';
  68. mysql_close($polaczenie);
  69. }
  70. }
  71. mysql_close($polaczenie);
  72. }
  73.  
  74. // tworzenie formularza HTML
  75. echo '
  76.  
  77. <form action="index.php?page=rejestracja" method="post">
  78. <input type="hidden" name="wyslane" value="TRUE" />
  79.  
  80. <p>Imię: <input type="text" name="imie" /></p>
  81. <p>Nazwisko: <input type="text" name="nazwisko" /></p>
  82. <p>Login*: <input type="text" name="login" /></p>
  83. <p>Hasło*: <input type="password" name="haslo" /></p>
  84. <p>Powtórz hasło*: <input type="password" name="haslo2" /></p>
  85. <p>Adres e-mail*: <input type="text" name="email" /></p>
  86. <p>Powtórz adres e-mail*: <input type="text" name="email2" /></p>
  87. <p><input type="submit" value="wyślij" /></p></form>
  88.  
  89. ';
  90.  
  91. } else {
  92. header('Location: / '); // zalogowany użytkownik zostaje przekierowany na stronę główną
  93. }
  94.  
  95. ?>
  96.  


mółgby ktoś sprawdzić gdzie tu jest błąd ?
Patras3
Cytat
if (!isset($_SESSION['login'])) { // dostęp dla niezalogowanego użytkownika
[....]
}else {
header('Location: / '); // zalogowany użytkownik zostaje przekierowany na stronę główną
}

Może masz coś w sesji jako login i dlatego?
Wklej to do jakiegoś testowego pliku np test.php otwórz w przeglądarce i sprawdź smile.gif
  1. <?
  2. foreach($_SESSION as $sesja=>$wartosc) {
  3. echo "<p>".$sesja." = ".$wartosc."</p>";
  4. }
  5. ?>
Misiuu
nic nie ma, nic sie nie pojawia haha.gif
a gdy sie zaloguje to login = admin
markonix
Strona się odświeża już w momencie wejścia na podstronę rejestracji czy w momencie rejestrowania użytkownika (wysłanie formularza)?
Misiuu
nie, nie, to jest tak że skrypt wgl sie nie wykonuje,
wpisuje wszystkie dane daje wyslij, i pola znów są czyste i nic sie nie dzieje.
maniana
Pewnie sesja nadal istnieje i ciągle jesteś zalogowany...
Zamiast redira testowo wyświetl tam zawartość $_SESSION
markonix
No dobrze czyli to drugie o czym mówiłem - nie działa formularz rejestracji.

Tak więc do dzieła - najpierw oceń do jakiego momentu formularz działa.
Kolejno 20, 60, 66 (linie kodu na forum).

maniana pytałem się przecież czy już po wejściu nie działa...
no chyba że strona główna to strona rejestracji.
Misiuu
sesja na bank nie istnieje, gdyż jak jestem zalogowany,
to sie wylogowuje jest funkcja
  1. if ($_GET["wylogowanie"] == "tak") {
  2. // niszczenie sesji uĹĽytkownika
  3. header('Location: / ');

czyli sesji nie bedzie, to działa, gdyż początek rejestracji jest !isstet czyli moge wejsc tylko bedac niezalogowanym, a do plików w tym samym czasie które nie miają "!" wejsc nie moge, znaczy ze sesja raczej działa.
Ten skryt działał mi wcześnie nie wiem co sie zrąbało że nie działa.
a co do tych linii to co mam dokładnie zrobić bo jakoś nie zrozumiałem? mam usuwać części skryptu i zobaczyć czy w koncu zadziała ?
Patras3
@Musiuu - Czy faktycznie rejestrację masz w pliku index.php ? Bo przecież tam wysyła formularz dane...
i sprawdź proszę wiadomości - bo chyba nie czytasz ;P
Misiuu
wysyła do rejestracji haha.gif gdyż rejestarcja jest includowana za pomocą GET tam : >
czytam wiadomości nawet odpisuje
markonix
Cytat(Misiuu @ 11.08.2012, 18:05:08 ) *
a co do tych linii to co mam dokładnie zrobić bo jakoś nie zrozumiałem? mam usuwać części skryptu i zobaczyć czy w koncu zadziała ?

Masz "debugować" czyli sprawdzić gdzie skrypt "dochodzi" po wysłaniu formularza.
Podałem Ci kilka sugestii gdzie może leżeć problem.
Misiuu
to jak ja mam to debugować : >
markonix
No ludzie!

Byle czym echo, die cokolwiek sprawdź gdzie skrypt kończy działanie.

No i ustal czy skrypt się wysypuje zawsze czy już na etapie dodawania do bazy (formularz wypełniony poprawnie).
toaspzoo
http://4programmers.net/PHP/Debugowanie_kodu_php
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.