Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problemy ze skryptem logowania
Forum PHP.pl > Forum > PHP
Terrorizer
Witam,
Od kilku niedługiego czasu zajmuje się nauką php.
Obecnie jestem w trakcie tworzenia mojego pierwszego projektu, którym jest prosta gra przeglądarkowa.
Mam problem ze skryptem logowania, który ciągle wywala mi jakieś błędy, gdy naprawiam jeden, wyskakuje kolejny i tak bez końca haha tongue.gif
Morze będzie ktoś w stanie zerknąć okiem i wytknąć mi kilka rzeczy widocznych gołym okiem?

w tej chwili wyskakuje mi: "Notice: Undefined variable: users in C:\wamp\www\login.php on line 38" (czyli tutaj linijka zawierająca if md5), oraz "login failed" wyświetla się na ekranie
z góry dziękuje
  1. <?php
  2. mysql_connect('localhost','root','');
  3. mysql_select_db('users') or die('cannoct connect with database');
  4.  
  5. if (($_POST['login'] !='') && ($_POST['password'] !=''))
  6. {
  7. $login=$_POST['login'];
  8. $password=$_POST['password'];
  9. echo $login;
  10.  
  11. $loginresult=mysql_query("SELECT * FROM users WHERE login='$login' LIMIT 1");
  12. if (mysql_num_rows($loginresult)===1)
  13. if (md5($password)===$users['password'])
  14. echo '<p>login successful</p>';
  15.  
  16. else
  17. echo '<p>login failed</p>';
  18. }
  19. ?>
hind
z tym że nie ma nigdzie $users = mysql_fetch_assoc($loginresult);
Terrorizer
błąd występuje niestety w dalszym ciągu sad.gif
gdy wpisuje poprawne dane, które istnieją w bazie wyskakuje mi tylko "login failed"
gdy wpisuje dane które nie są dobre wywala to samo co poprzednio, czyli "Undefined variable: users" i też "login failed"
!*!
  1. if (($_POST['login'] !='') && ($_POST['password'] !=''))


Do sprawdzania czy istnieją użyj isset()
  1. if (md5($password)===$users['password'])


Komunikat mówi wyraźnie że nigdzie nie zdefiniowałeś zmiennej $users, więc skąd bierzesz $users['password']?

Zapoznaj się http://pl.wikibooks.org/wiki/PHP/Jak_to_się_robiło_kiedyś%3F
Terrorizer
dodałem linijkę, taką jak zasugerował kolega na początku, czy to jeszcze nie jest zdefiniowana zmienna?

przepraszam jeśli piszę jakieś głupoty, ale wiele rzeczy opieram na przykładach z książki lub internetu i nie zawsze rozumiem każdy szczegół swojego kodu...
!*!
Ważne jak i gdzie ją dałeś pokaż kod.
Terrorizer
mój kod obecnie podzielony jest na kilka plików, nic się tu kupy nie trzyma, nie wiem o co chodzi sad.gif
BARDZO PROSZĘ o pomoc
wygląda to dokładnie tak:

login.php
  1. <?php
  2. mysql_connect('localhost','root','') or die('cannot connect with server');
  3. mysql_select_db('users') or die('cannoct connect with database');
  4.  
  5. if(isset($_GET['action'])){
  6. switch($_GET['action']){
  7. case 'login': include 'login script.php';break;
  8. case 'logout': include 'logout script.php';break;
  9. default : include 'default script.php';break;
  10. }}
  11. else{ echo'dupa';}
  12. ?>


default script.php
  1. <?php
  2. if ($_SESSION['login'] !=''){
  3. echo 'welcome'.$_SESSION['$login'];
  4. }
  5. else{
  6. echo 'you are not aproved to be here';
  7. }
  8.  
  9. echo '<br/>what is it?? -a default site';
  10. ?>


login script.php
  1. <?php
  2. if (($_POST['login'] !='') && ($_POST['password'] !=''))
  3. {
  4. $login=$_POST['login'];
  5. $password=$_POST['password'];
  6. echo $login;
  7.  
  8. $loginresult=mysql_query("SELECT * FROM users WHERE login='$login' LIMIT 1");
  9. if (mysql_num_rows($loginresult)===1)
  10. $users = mysql_fetch_assoc($loginresult);
  11. if (md5($password)===$users['password']){
  12. echo '<p>login successful</p>';
  13. $_SESSION['id']=$users['id'];
  14. $_SESSION['login']=$users['login'];
  15. $_SESSION['password']=$users['password'];
  16. }
  17. else{
  18. echo '<p>login failed</p>';}
  19. }
  20. ?>


logout script.php
  1. <?php
  2. unset($_SESSION['id']);
  3. unset($_SESSION['login']);
  4. unset($_SESSION['password']);
  5. unset($_SESSION);
  6. ?>
!*!
Aha i? Całość jest źle napisana, nie znasz podstaw, zapoznaj się z linkiem jaki Ci podałem jak i całym kursem php. Nie poprawiłeś też wskazanych błędów.
Terrorizer
Uczę się na bazie kodu innych ludzi, uważam ,że to bardziej procentuje niż czytanie niekończących się artykułów, co zabija moje oczy , które niemal krwawią już od tego.

Może ja poprostu nie zrozumiałem wskazówek, jak sam wspomniałeś, brak mi podstaw i nie całkiem wiedziałem co z tym zrobić.

Prawdopodobnie nie powinienem pisać tu w tak banalnych sprawach, ale skoro chcecie być posiadaczami najlepszego forum w okolicy, to chyba liczba zadanych pytań powinna być jak największa, czyż nie tongue.gif?
!*!
Wyłącz komputer i idź się przejść. Jutro popraw kod

1. łącz się z bazą kiedy jest to konieczne, czyli pierw sprawdź czy formularz został wysłany przez isset
2. tą samą funkcją sprawdzaj czy dane istnieją, jeśli tak, nawiąż połączenie.
3. nie sprawdzaj czy sesja jest inna niż '', tylko sprawdź czy w ogóle istnieje oraz jaką ma wartość
4. nazwy plików to nie edytor tekstu, zamiast spacji używaj pokreslnika _ lub nazwaPliku.php
5. jeśli chcesz się czegoś nauczyć, to zastosuj od rpazu PDO do łączenia z bazą, zapomnij o mysql_* ponieważ są wycofywane.
Terrorizer
no i taka odpowiedź, to ja rozumiem biggrin.gif
dzięki wielkie
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.