Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] formularz do logowania nie działa
Forum PHP.pl > Forum > Przedszkole
yahreck
Przepisałem z mądrej książki dwa pliki:
1. login.php
  1. <?php
  2. switch ($do) {
  3.  
  4. case "authenticate":
  5. $connection = mysql_connect("mysql.adres_serwera", "moj_login", "moje_haslo")
  6. or die ("Couldn't connect to server.");
  7. $db = mysql_select_db("moja_baza", $connection)
  8. or die ("Couldn't select database.");
  9. $sql = "SELECT id 
  10. FROM users 
  11. WHERE username='$username' and password='$password'";
  12. $result = mysql_query($sql)
  13. or die("Couldn't execute query.");
  14. $num = mysql_numrows($result);
  15. if ($num == 1) {
  16. echo "You are a valid user!";
  17. echo "Your username is $username";
  18. echo "Your password is $password";
  19. } else if ($num == 0) {
  20. unset($do);
  21. echo "You are not authorized! Please try again.";
  22. include("login_form.inc");
  23. }
  24. break;
  25. default:
  26. include("login_form.inc");
  27. }
  28. ?>


2. login_form.inc
  1. <FORM ACTION="login.php?do=authenticate" METHOD="post">
  2. <table border=0>
  3. <tr>
  4. <td> <strong> Nazwa użytkownika </strong> </td>
  5. <td> <input type="text" name="username" size="10" maxsize="10"></td>
  6. </tr>
  7. <tr>
  8. <td> <strong> Hasło </strong> </td>
  9. <td> <input type="password" name="password" size="10" maxsize="10"></td>
  10. </tr>
  11. <tr>
  12. <td colspan="2" align="center"> <input type="submit" value="Zweryfikuj mnie"></td>
  13. </tr>
  14. </FORM>

W bazie danych utworzyłem tabelę users z trzema kolumnami:
- id
- username
- password

Gdy klikam na Zweryfikuj mnie, pola są czyszczone i nic się nie dzieje.
Co jest źle?
Cysiaczek
Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole
-agemlonZ-
hehe ale się zapędziłeś biggrin.gif Zamiast się nauczyć to ty przepisujesz.. zal.pl
agemlonZ
sorka ale ten post wczesniej to ja napisalem pszepraszam
in5ane
Powiem Ci tylko jedno.. nie wtrącaj się, bo jak patrze to tylko spam robisz.


Twoje wypowiedzi z innych tematów (nic nie wnoszące do nich):

Kod
no normalnie kasujesz, a ty co zes myslal ze cie w domu bijom?


Kod
No widzisz? pierw sie cza uczyc PHPulca a nie gupoty gadac w pszeczklu


Kod
no wlasnie cyciaczek ci ladnie wytumaczyl


Kod
właha!! musisz sam se zrobic bo nie istnieje a ty mulohonor415648654168 nie ftroncaj siee

i tutaj w ogóle jak żeś napisał "ftroncaj" <-- buhahahahahha, to jest właśnie ten twój żal


Ostatnio takie modne się zrobiło to całe: żal czy żal.pl
Głupie dzieci neostrady. Moderatorze proszę o porządek, bo na Przedszkolu robi się straszny spam.
agemlonZ
kurcze pieczone co rzes z nieba spad incostam soctam.... ale jaja pierszy sie odezwales hahaha ale jestes
in5ane
Raport kolego poleciał.

@edit: Tak się przyglądam twoim wiadomościom to pięknie piszesz laugh.gif laugh.gif laugh.gif
cornholio666
Cytat(agemlonZ @ 14.10.2007, 13:32:48 ) *
kurcze pieczone co rzes z nieba spad incostam soctam.... ale jaja pierszy sie odezwales hahaha ale jestes


Ale jesteś zjebem
agemlonZ
jaki report. a ty dla mnie to pierd w morde jezusie maly jajajajaha

haha nufiklbo;4578654 nie ftronacj sie bo jestes nieparanomalny zjawiskiem niemetorologicznym bo zaraz masz pdszehcaplane

---
No to dajemy ostrzeżenie a jeszcze jeden taki post i kolejne wraz z moderacją na tydzień.
~mike
yahreck
Cytat(cornholio666 @ 14.10.2007, 13:05:52 ) *
nie mysql_numrows tylko [manual\]http://pl2.php.net/manual/pl/function.mysql-num-rows.php\[/manual\]

Dziękuję bardzo za zauważenie tej literówki, moja przeoczenie, ale niestety nie pomogło.

Cytat(Cysiaczek @ 14.10.2007, 13:15:11 ) *
Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole

Z miłą chęcią. Tylko jak go teraz zmienić?

Cytat(-agemlonZ- @ 14.10.2007, 13:18:22 ) *
hehe ale się zapędziłeś biggrin.gif Zamiast się nauczyć to ty przepisujesz.. zal.pl

Najlepiej uczyć się na przykładach.
Hazel
1. Jakby Wam była potrzebna wiedza, to mysql_numrows() jest aliasem mysql_num_rows() i działa tak samo. Więc nie miało prawa pomóc.
Pierwszym, co mi się rzuciło w oczy, jest stosowanie krótkich nazw zmiennych ($password zamiast $_POST['password']). Przy wyłączonym register_globals to nie będzie działać. Jeśli nie o to chodzi, to chyba nie wiem, albo niedostatecznie dokładnie przejrzałem kod.

2. No jasne, ja też ucząc się, przepisywałem książki. Uważam to za zdecydowanie najlepszy sposób, bo nie trzeba wkuwać niczego na pamięć - wszystko widać w praktyce.

3. Nazwę tematu możesz zmienic, edytując pierwszego posta smile.gif

4. Ale śmietnik w temacie. Takie talenty się wypowiadają na forum o php, że aż strach myśleć. A nieraz mi sie wydaje, że to ja jestem słaby, cienki, głupi i niedouczony...
yahreck
Miałem trochę (kilka lat?) przerwy w pisaniu kodu php i w moim starym dobrym podręczniku jeszcze pisali $password zamiast $_POST['password'] i działało, ale czytam, że od wersji PHP 4.2.0 nastąpiła zmiana jeśli chodzi o zmienne globalne. Ale to szczegół.

Zamiast
switch (do)
wstawiłem
switch ($_POST['do'])
i mimo to jest omijana pętla case, bo zmienna $do jest pusta.
W pliku login_form.inc jest instrukcja, żeby w adresie po login.php było dodawane ?do=authenticate
ale zmienna $do nie jest przesyłana.
Może od tamtych starych dobrych czasów to też się zmieniło i tu jest pies pogrzebany?
cornholio666
jak masz w adresie ?do=cos

to nie ma bata zeby kod

  1. <?php
  2. echo $_GET['do'];
  3. ?>


nie wyświetlil ci "cos"
Hazel
  1. <?php
  2. switch($_GET['do'])
  3. ?>


i wszystko działa, wybacz, że nie zrozumiałem.
yahreck
Dzięki
Zaczyna działać, tzn. wchodzi w pętlę.
Gdy wpiszę poprawną nazwę użytkownika i hasło, mówi, że niepoprawne.
Zapewne trzeba zmienić poniższy zapis zmiennych:
  1. <?php
  2. $sql = "SELECT id 
  3. FROM users 
  4. WHERE username='$username' and password='$password'";
  5. ?>

ale żadne z poniższych nie działają
  1. <?php
  2. $sql ="SELECT id 
  3. FROM users 
  4. WHERE username=$_POST['username'] and password=$_POST['password']";
  5.  
  6. $sql = "SELECT id 
  7. FROM users 
  8. WHERE username='$_POST['username']' and password='$_POST['password']'";
  9.  
  10. $sql = "SELECT id 
  11. FROM users 
  12. WHERE username="$_POST['username']" and password="$_POST['password']"";
  13.  
  14. $sql = "SELECT id 
  15. FROM users 
  16. WHERE username='$_POST["username"]' and password='$_POST["password"]'' ";
  17. ?>
Hazel
Dobrze miałeś w pierwotnej wersji, tylko przed tym zapytaniem dodaj jeszcze:
  1. <?php
  2. $password = $_POST['password'];
  3. $username = $_POST['username'];
  4. ?>
yahreck
Dziękuję wszystkim za pomoc.
Pomogło. yahoo.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.