Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sesjami i zalogowaniem!
Forum PHP.pl > Forum > PHP
_Martin_
Witam

Robie sobie skrypt newsów bo to jest mój 1 własny skrypt jaki robie he dopiero sie uuucze nomalka ale nie o tym!

To tak smile.gif


Mam kod:

  1. <?
  2.  
  3. $password = 'SELECT * FROM `user` WHERE `login`="'.$_POST['username'].'" && `password`="'.$_POST['password'].'"';
  4. $passwords = exmysql_query($password);
  5. echo" Zapytanie sie udało <br><br>";
  6. echo "";
  7.  
  8. /*
  9. $passwords = array("martin" => "pass");
  10. */
  11.  
  12. if (!$_POST["username"] or !$_POST["password"]) {
  13. echo "Wprowadz login i hasło uzytkownika!";
  14. }
  15.  
  16. if ($_POST["password"] == $passwords[$_POST["login"]]) {
  17. echo "Logowanie zakończyło się sukcesem!";
  18. $_SESSION["username"] = $_POST["username"];
  19. }
  20.  
  21. else {
  22. echo "Logowanie NIE UDANE!";
  23. }
  24. ?>



Jak widać w tym kodzie jest jeszcze kod
  1. <?php
  2. $passwords = array("martin" => "pass");
  3. ?>


To znaczy dane do logowania z tablicy!

Wiec już mówie

Chodzi oto ze nie działa mi logowanie na sesje niby ok ale nie działa

A Oto str bazy
  1. CREATE TABLE `user` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `login` varchar(18) NOT NULL,
  4. `password` varchar(32) NOT NULL,
  5. `email` varchar(255) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. )


Jeśli chodzi o formularz:

  1. <form action="index.php?cmd=login_sprawdz" method="POST">
  2. <TABLE BORDER=0>
  3. <TR>
  4.      <TD>Login:</TD>
  5.      <TD><INPUT TYPE="TEXT" SIZE=10 NAME="username"></TD>
  6. </TR>
  7. <TR>
  8.      <TD>Hasło:</TD>
  9.      <TD><INPUT TYPE="PASSWORD" SIZE=10 NAME="password"></TD>
  10. </TD>
  11. </TABLE>
  12. <INPUT TYPE="SUBMIT" VALUE="Zaloguj się">
  13. </FROM>


Proszę o pomoc czemu nie moge się zalogować do bazy a mam tak takie same dane jak w tablicy? wyskakuje błąd!

"Resource id #6"

Jak użyję kod:
  1. <?php
  2. print_r($passwords);
  3. ?>


Pozdro smile.gif
cadavre
Ty tylko wykonujesz query. Na początku:
  1. <?php
  2. $password = 'SELECT * FROM `user` WHERE `login`="'.$_POST['username'].'" && `password`="'.$_POST['password'].'"';
  3. $query = mysql_query($password);
  4. $passwords = mysql_fetch_array($query);
  5. ?>
Nie rozumiem jednak sensu tego co zakomentowałeś - jeśli masz te dane z $_POSTa to po co odczytujesz je z bazy? Początkowym SQL odczytujesz wsz. pola tabeli z bazy danych - jak wiadomo hasło w bazie powinno być zakodowane.

BTW Zupełnie nie taka jest idea logowania. Pobierasz POSTem login i hasło i porównujesz je na poziomie zapytania SQL (już to robisz bo masz klauzulę WHERE). Jeśli warunek WHERE będzie spełniony to znaczy, że user istnieje, hasło podał prawidłowe - może się zalogować.
_Martin_
To jest prosta pierwsza wersja smile.gif Chodzi oto iż zmienna $_POST['username'] ma login a druga ma hasło ! i potem porównuje ją z baża czy login i hasło jest takie same ! Oto mi chodziło!



P.S Wiecie ja się dopiero ucze więc musze nabrać wprawy a potem się zobaczy.
Narazie mam pół ksiazki w głowie a kaj praktyka? sad.gif
Koperfild
Ten kod wg mnie jest zupełnie bez sensu, powinien wyglądać tak:
  1. <?
  2. if(isset($_POST['password']) && isset($_POST['username']){
  3.  
  4. $log_in = mysql_query('SELECT id FROM `user` WHERE `login`="'.$_POST['username'].'" && `password`="'.$_POST['password'].'"');
  5.  
  6. if(mysql_num_rows($log_in) == 1){
  7. $_SESSION[mysql_result($log_in,0,'id')] = $_POST['password'].','.$_POST['username']; 
  8. echo 'Zalogowano';
  9. } else echo 'Podałeś złe dane';
  10.  
  11. } else echo 'Nie wpisałeś nazwy użytkownika lub hasła';
  12. ?>


i teraz na każdej stronie dodajesz

  1. <?
  2. $sesja = explode(',' $_SESSION['id']) or die('Dupa');
  3. $sprawdz_dane_w_sesji = mysql_query('SELECT id FROM `user` WHERE `login`="'.$sesja['1'].'" && `password`="'.$sesja['1'].'"');
  4. if(mysql_num_rows($sprawdz_dane_w_bazie) == 1)
  5. {
  6. //pomyślna weryfikacja wykonujemy kod
  7. } else {
  8. //ktoś niezalogowany otwiera zabezpieczoną strone
  9. }
  10. ?>


W tym jest pewnie pełno błędów, pisze to z kompa w szkole, ale chodzi o to żebyś zrozumiał samą zasade...
_Martin_
No troszkę tego nie rozumiem.

A Nie lepiej prościej
Zrobić logowanie i kod który porównuje dane podane w formularzu z tymi z bazy! np porównywanie ciągów znaków, i potem jak TRUE = SESSION == 1
FALSE = SESSION = 0 questionmark.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.