Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem ze skryptem logowania
Forum PHP.pl > Forum > Przedszkole
-charli_22-
Witam

Stworzyłem skrypcik logowania, który po wnikliwych testach okazało się że nie pobiera z bazy danych informacji przesłanych w tablicy POST. Poniżej przedstawiam kod:

  1. <?php
  2. if(isset($_POST['g_email']) and isset($_POST['g_passwd'])){
  3.  
  4. $sql = "SELECT g_id, g_email, g_passwd FROM gusers WHERE g_email='" . $_POST['g_email'] . "' AND g_passwd='" . $_POST['g_passwd'] . "'";
  5.  
  6. $result = mysql_query($sql, $conn)
  7. or die ('Nie potrafię odnależć informacji o użytkowniku: ' . mysql_error());
  8.  
  9. if ($row = mysql_fetch_assoc($result)) {
  10. while ($row=mysql_fetch_assoc($result)) {
  11. $_SESSION['g_id'] = $row['g_id'];
  12. $_SESSION['g_email'] = $row['g_email'];
  13. $_SESSION['g_passwd'] = $row['g_passwd'];
  14. echo 'Zostałeś zalogowany. <a href="../index.php">Kliknij</a> aby przejsc do indeksu<br /><br />';
  15. }
  16. }
  17. }
  18. ?>


Zapytanie
  1. <?php
  2. $sql = "SELECT g_id, g_email, g_passwd FROM gusers WHERE g_email='" . $_POST['g_email'] . "' AND g_passwd='" . $_POST['g_passwd'] . "'";
  3. ?>


nie zwraca żadnych wartości. Zamiast $_POST['g_email'] $_POST['g_passwd'] wpisywałem na sztywno wartości z bazy danych, ale to nie pomagało. Gdy zmieniłem AND na OR wówczas informacje zostały pobrane z bazki, ale OR w przyszłości może doprowadzić do problemów.

Kodowanie w bazie mam UTF8.

Pozdrawiam
charli_22
roofy_1
Witaj!!!
...a łączysz się z bazą? moze sprawdź to najpierw

poza tym ja na początek utworzyłbym nazwy krótkie zmiennych; po co klepać te wszystkie $_POST[...]
ale to taka moja uwaga
Pilsener
Ja bym zrezygnował z tego skryptu, nie podoba mi się on - z tego co pamiętam, na webhelpie był prosty i ładny skrypcik logowania.


Moim zdaniem metodologia powinna być taka:
  1. <?php
  2. $zapyt = mysql_query("select pass from users WHERE login='".$login."'");
  3. ?>

Pobierasz hasło dla danego loginu (czy tam maila) i sprawdzasz z hasłem, które masz w $_POST.
escobar1983
  1. <?php
  2. $polaczenie = @mysql_connect($host, $user, $pass)
  3. or die('Brak połączenia z serwerem mysql. Błąd: '.mysql_error());
  4.  
  5.  
  6. $db = @mysql_select_db($baza, $polaczenie)
  7. or die('Nie mogę połączyć się z bazą danych. Błąd: '.mysql_error());  
  8.  
  9. if(!empty($_POST["g_email"]) && !empty($_POST["g_passwd"])){
  10. $guer=mysql_query("SELECT g_id, g_email, g_passwd FROM gusers WHERE g_email='" . $_POST['g_email'] . "' AND g_passwd='" . $_POST['g_passwd'] . "'";);
  11. $odp=mysql_num_rows($guer);
  12.  
  13. if( $odp == '1') {
  14. echo 'jestes '; 
  15. }
  16. ?>
Nie wiem czy ci o to chodzilo . Tutaj jest sprawdzenie czy osoba jest w bazie jak tak wyswietli ci napisz jestes
charli_22
Witam!
Połączenie do bazy było ustalone, nie załączyłem całego pliku tylko wkleiłem samą funkcję odpowiedzialną za logowanie, moja wina:(
Napisałem zapytanie według metodologii, którą podesłał mi Pilsener i zaczęło działać:) :
  1. <?php
  2. $zapyt = mysql_query("select pass from users WHERE login='".$login."'");
  3. ?>


Dzięki
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.