Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]
Forum PHP.pl > Forum > Przedszkole
debilka_z_php
Witam,

Chciałam, aby w polu Login i Hasło użytkownik wpisał swoje Nazwisko oraz Imię, po czym mógł się zalogować. Niestety, nie widać formularza, tylko "The page isn't redirecting properly". Nie mam pojęcia w czym jest problem, od kilku dni próbuję wymyślić cokolwiek. Niestety, moje wysiłki spełzły na niczym. Dlatego proszę, aby jakaś miła dusza mi pomogła rozwiązać problem. Tutaj znajduje się mój kod:

  1. <?php
  2.  
  3.    require('Config.php');
  4.    polaczenie($nazwa_user,$haslo,$nazwa_bazy);
  5.    
  6.    $sql="select * from Pacjenci where Nazwisko = '$_POST[login]'";
  7.    
  8.    $wynik=mysql_query($sql);
  9.    
  10.    $rek=mysql_fetch_array($wynik);
  11.    
  12.    if ($_POST[login] == $rek['Nazwisko'] &&  $_POST[pass] == $rek['Imie'])
  13.    {
  14.        session_start();
  15.        $_SESSION[login]=$_POST[login];
  16.        header('Location: Pacjent.php');
  17.        exit();
  18.    }
  19.    else
  20.    {
  21.        echo $_POST[login];
  22.        echo $_POST[pass];
  23.    }
  24.  
  25. ?>
  26.  
  27.  
  28. <?php
  29. echo "<form action='".$PHP_SELF."' method=post>";
  30.  
  31. echo "<input type=password name=login>Login<br>";
  32. echo "<input type=password name=pass>haslo<br>";
  33. echo "<input type=submit value='Logowanie'>";
  34.  
  35. echo "</form>";
  36.  
  37. ?>
ziqzaq
Nie wiem czy ci to pomoże, ale spróbuję pokazać ci co IMHO jest nie tak w skrypcie.
Ok, a więc:
  1. <?php
  2. require('Config.php');
  3. polaczenie($nazwa_user,$haslo,$nazwa_bazy);
  4.  
  5. // Tutaj przypisujesz w zapytaniu zmienna $_POST['login'] <== przypatrz się temu i twojemu kodowi poniżej (apostrofy)!!!
  6. // Drugi błąd. Przypisujesz zmienną a nie wiesz czy ona istnieje (tip: funkcja isset)
  7. // Dodatkowo w ogóle nie sprawdzasz danych przychodzacych do skryptu,
  8. // minimum bezpieczenstwa to mysql_real_escape_string() (poczytaj o tym)
  9. $sql="select * from Pacjenci where Nazwisko = '$_POST[login]'";
  10.  
  11. // Trzeci błąd. Wykonujesz zapytanie za każdym wywołaniem skryptu
  12. // nawet wtedy gdy formularz nie został wypełniony!
  13. // Trzeba uzależnić wykonywanie zapytania i sprawdzanie danych od tego czy przesłano login i hasło.
  14. // Sprawdź czy masz dane i tylko wtedy twórz zapytanie ($sql) i próbuj logowania
  15. $wynik=mysql_query($sql);
  16.  
  17. // Czwarty błąd. Pobierasz wynik z zasobu mysql, a co jak zapytanie się niepowiodło?
  18. // $rek=mysql_fetch_array($wynik);
  19. // W tym ci pomogę:
  20. // Acha i zauważ jedno: jakbyś w zapytaniu sprawdzała naraz login i hasło to wystarczy
  21. // że dostaniesz 1 wynik z zapytania (co oznacza że login i hasło są dobre
  22. // i nie musisz ich drugi raz sprawdzać)
  23. if ($wynik && mysql_num_rows($wynik) == 1) {
  24.    // Dostaliśmy wynik, teraz pobieramy rekord
  25.    $rek=mysql_fetch_array($wynik);
  26.  
  27.    // Znowu apostrofy - a raczej ich brak!
  28.    if ($_POST[login] == $rek['Nazwisko'] && $_POST[pass] == $rek['Imie'])
  29.    {
  30.        session_start();
  31.        $_SESSION[login]=$_POST[login]; // Apostrofy!
  32.        header('Location: Pacjent.php');
  33.        exit();
  34.    }
  35.    else
  36.    {
  37.        echo $_POST[login]; // Apostrofy!
  38.        echo $_POST[pass]; // Apostrofy!
  39.    }
  40. }
  41. else {
  42.    echo 'Logowanie nie powiodło się. Login i/lub hasło są niepoprawne.';
  43. }
  44.  
  45. //echo "<form action=\"$PHP_SELF."' method=post>";
  46. ?>
  47. <!-- Staraj się aby atrybuty html podawać w cudzysłowach(") -->
  48. <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
  49. <input type="password" name="login">Login<br/>
  50. <input type="password" name="pass">haslo<br/>
  51. <input type="submit" value="Logowanie">
  52. </form>

Podsumowanie:
- sprawdzasz czy przesłano login i hasło i czy nie są puste (funkcje isset i empty, wszystko w manualu),
- jeśli masz login i hasło to tworzysz zapytanie do bazy (login='blba' and haslo='blblak'), i pobierasz rekord z bazy,
- jeśli dostałaś dokładnie jeden rekord to mamy udane logowanie, w przeciwnym razie fail winksmiley.jpg,
- jeśli było udane logowanie to przypisujesz login do zmiennej sesyjnej, jak nie to wyświetlasz error.
To chyba wszystko, mam nadzieję że nie walnąłem jakiejś gafy winksmiley.jpg.
I pamiętaj, że to nie jest gotowiec, sama musisz wprowadzić poprawki.

PS Kod dawaj w tagach php (bbcode)
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.