Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Moj pierwszy skrypt logowania :]
Forum PHP.pl > Forum > PHP
minister1234
Witam wszystkich !

Po dużym czasie spędzonym w PHP zamierzam napisać jakąś własną stronkę od 0. Tak więc doszedłem do skryptu logowania i tutaj zaczynają się dla mnie schody ;c

Otóż mam taki problem.

W bazie danych w tabeli `users` znajduje się `nick`='admin' i `haslo`='admin' oraz `zalogowany`='0'.
Chcę zrobić taki skrypt, że po podaniu poprawnego loginu i hasla zmienil sie status z 0 na 1. A następnie skrypt sprawdzalby czy status wynosi 1. Jesli TAK to znaczy ze user jest zalogowany, jeśli nie to skrypt kazałby się mu spowrotem zalogować.

Niestety ten mój skrypt nie działa, gdyż jeśli poda się TYLKO poprawny login to odrazu skrypt zmienia w bazie danych status z 0 na 1 nie ważne czy hasło jest poprawne czy złe. W odwrotną stronę to nie działa. Tak więc co jest źle ?

Obecnie napisałem takie cuś.

  1. <?php
  2. include('includes/config.php');
  3. $login = "SELECT `nick` FROM `users` WHERE `nick`='{$_POST['login']}'";
  4. $idlogin = mysql_query($login);
  5. $pass = "SELECT `haslo` FROM `users` WHERE `haslo`='{$_POST['haslo']}'";
  6. $idpass = mysql_query($pass);
  7. if(isset($_POST['login']) == $idlogin && (isset($_POST['haslo'])) == $idpass) {
  8. $zapytanie = "UPDATE `users` SET `zalogowany` = '1' WHERE `nick`='{$_POST['login']}'";
  9. $idzapytania = mysql_query($zapytanie);
  10. }else {
  11. print ("Podano zly login lub haslo");
  12. }
  13.  
  14. ?>
  15.  
  16.  
  17. <h1>LOGOWANIE !</h1>
  18. <form action='login.php' method='POST'>
  19. <input type='text' name='login'>
  20. <input type='password' name='haslo'>
  21. <input type='submit' value='Wyslij'>
  22. </form>
raf30al
Nie jestem asem w php ale chyba powinno jeszcze być sprawdzanie hasla i kazdy user powinien mieć swój własny ID
minister1234
W tej linijce masz sprawdzanie LOGINU i HASLA.

  1. if(isset($_POST['login']) == $idlogin && (isset($_POST['haslo'])) == $idpass)


A ID także mają userzy :]
com
raf30al dobrze myślisz, autor myślał że je tam zawał, ale tak nie jest biggrin.gif

7 linia powinna być miej więcej taka (chciałeś na skróty ale się tak nie da...)
  1. if(isset($_POST['login']) && $_POST['login'] === $idlogin && (isset($_POST['haslo'])) && $_POST['haslo'] === $idpass) {


pisałem na szybko wiec spr nawiasy wink.gif

poza tym dla stringów sprawdzasz czy się typ zgadza dlatego === wink.gif

poza tym musisz w jakiś sposób pobrać wartość z bazy do tablicy, samo $idlogin = mysql_query($login); nic Ci nie da smile.gif do tego masz mysql_fetch_assoc (numerowanie kluczami) lub mysql_fetch_row (num indexami)
Turson
  1. $login = "SELECT `nick` FROM `users` WHERE `nick`='{$_POST['login']}'";
  2. $idlogin = mysql_query($login);
  3. $pass = "SELECT `haslo` FROM `users` WHERE `haslo`='{$_POST['haslo']}'";
  4. $idpass = mysql_query($pass);
  5. if(isset($_POST['login']) == $idlogin && (isset($_POST['haslo'])) == $idpass) {

To tak nie działa, że $idlogin to pobrany login z bazy. Poczytaj o pobieraniu wynikó jak np mysql_fetch_assoc
in5ane
Przykładowo pobierasz tak:
  1. $query = mysql_query("SELECT `nick` FROM `users` WHERE `nick`='{$_POST['login']}'");
  2. $row = mysql_fetch_array($query);
  3. $login = $row['nick'];
i już pod zmienną $login masz nazwę użytkownika.
em1X
http://pl.wikipedia.org/wiki/SQL_injection exclamation.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.