Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Moj pierwszy skrypt logowania :]
minister1234
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 24.10.2012

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
raf30al
post
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 4.02.2009

Ostrzeżenie: (0%)
-----


Nie jestem asem w php ale chyba powinno jeszcze być sprawdzanie hasla i kazdy user powinien mieć swój własny ID
Go to the top of the page
+Quote Post
minister1234
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 24.10.2012

Ostrzeżenie: (0%)
-----


W tej linijce masz sprawdzanie LOGINU i HASLA.

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


A ID także mają userzy :]
Go to the top of the page
+Quote Post
com
post
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


raf30al dobrze myślisz, autor myślał że je tam zawał, ale tak nie jest (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/wink.gif)

poza tym dla stringów sprawdzasz czy się typ zgadza dlatego === (IMG:style_emoticons/default/wink.gif)

poza tym musisz w jakiś sposób pobrać wartość z bazy do tablicy, samo $idlogin = mysql_query($login); nic Ci nie da (IMG:style_emoticons/default/smile.gif) do tego masz mysql_fetch_assoc (numerowanie kluczami) lub mysql_fetch_row (num indexami)

Ten post edytował com 20.09.2013, 18:57:17
Go to the top of the page
+Quote Post
Turson
post
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
in5ane
post
Post #6





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
em1X
post
Post #7





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


http://pl.wikipedia.org/wiki/SQL_injection (IMG:style_emoticons/default/exclamation.gif) !
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 13:41