Formularz logowania nie chce działać - stoję w miejscu, nie widzę błędu

0

Witam serdecznie! :)

Od trzy dni temu zacząłem przygodę z PHP podczas kursu eduweb, zacząłem też grzebać samemu i znalazłem na internecie informacje z których skleiłem swój kod na rejestrację konta (który działa) oraz na logowanie, który.. nie działa. Po prostu za każdym razem twierdzi, że podałem złe dane, a weryfikowałem to w phpMyAdmin i wszystko się zgadza.

Siedzę już nad tym za długo i wiem, że sam tego nie wykombinuję - czy byłby ktoś z Was tak miły/miła i wytłumaczył mi co robię źle?

Pozdrawiam!
M.

<?php session_start(); require_once('db.php');?>
<html>
<head>
<title>R_15_01</title>
</head>
<body>
<?php


    if (!isset($_POST['imie']) && !isset($_POST['nazwisko']) && !isset($_POST['haslo']) && $_SESSION['auth'] == FALSE) {
?>  
     	  <form name="form-logowanie" action="test.php" method="post">
          Imie: <input type="text" name="imie"><br>
          Nazwisko: <input type="text" name="nazwisko">
          Hasło: <input type="password" name="haslo">
          <input type="submit" name="zaloguj" value="Zaloguj">
		  </form>
  <?php
 	 }

    elseif (isset($_POST['imie']) && isset($_POST['nazwisko']) && isset($_POST['haslo']) && $_SESSION['auth'] == FALSE) {
      
     
			if (!empty($_POST['imie']) && !empty($_POST['nazwisko']) && !empty($_POST['haslo'])) {
         
        	$imie = mysql_real_escape_string($_POST['imie']);
			$nazwisko = mysql_real_escape_string($_POST['nazwisko']);
			$haslo = mysql_real_escape_string($_POST['haslo']);
			$haslo = md5($haslo); 
        
        
			$sql = mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `imie` = '$imie' AND `nazwisko` = '$nazwisko' AND `haslo` = '$haslo'"));
        
            
            	if ($sql == 1) {
              
                
                	$_SESSION['imie'] = $imie;
					$_SESSION['auth'] = TRUE;
                	
               
					echo '<meta http-equiv="refresh" content="1; URL=hide.php">';
					echo '<p style="padding-top:10px;"><strong>Proszę czekać...</strong><br>trwa logowanie i wczytywanie danych<p></p>';
            }
            
            ////////////// WYWALA WŁAŚNIE TEN BŁĄD PONIŻEJ, SPRAWDZAŁEM TEŻ CZY NIE WALNĄŁEM SIĘ PRZY WPISYWANIU DANYCH, ALE PROBLEM LEŻY W ETAPIE PORÓWNYWANIA GO Z TABLICĄ W SQL 
            
					else {
					echo '<p style="padding-top:10px;color:red" ;="">Błąd podczas logowania do systemu 01<br>';
					print_r($sql);
					echo $_POST['imie'];
					echo $_POST['nazwisko'];
					echo $_POST['haslo'];
					echo $haslo;
					echo '<a href="index.php" style="">Wróć do formularza</a></p>';
            }	
        }
        
       
        else {
            echo '<p style="padding-top:10px;color:red" ;="">Blad podczas logowania do systemu 02<br>';
            echo $_POST['imie'];
            echo $_POST['nazwisko'];
            echo '<a href="index.php" style="">Wroc do formularza</a></p>';    
        }
    }
 ?>
</body>
</html> 
0

Witam, panie Radku!
Jaka wartość jest wyświetlana przy

print_r($sql);

(3 linijka pod komentarzem o błędzie)

Sprawdź też nazwę bazy. Być może przypadkiem, ale częściej spotykam się z nazwą Users, niż User, jak masz w SELECT.

No i przy rejestracji hasło wrzucasz po użyciu md5(), prawda? :)

0

Wartości nie zwraca żadnej, a nazwa bazy jest prawidłowa. Oczywiście przy rejestracji też używałem md5 przy haśle :)

0

Ciężko mi stwierdzić, co jest nie tak, może znajdzie się jakiś specjalista. U siebie też zauważyłem, że w mniej-więcej co drugim projekcie MySQL odmawia posłuszeństwa.

Hmm...
a może by tak użyć mysqli? http://webmade.org/porady/mysqli-mysql-baza-danych.php

0

No tragedia, stoję w miejscu w tej chwili, a wszystko wydaje się być ok. Dziękuję za chęć pomocy i czekam aż ktoś będzie mi w stanie wytłumaczyć co i jak ;)

0

Mysqli albo PDO to trzeba tutaj użyć koniecznie. Ponadto zabezpieczanie haseł za pomocą md5 to zły pomysł, lepiej: http://php.net/manual/en/faq.passwords.php
Co do problemu to można to przepisać na mysqli (usuwajac po drodze niepotrzebny kod html i dziwne przekierowania), a potem badać za pomocą funkcji var_dump te newralgiczne zmienne i obserwować co się z nimi dzieje w miarę wykonywania się skryptu.

0
$sql = mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `imie` = '$imie' AND `nazwisko` = '$nazwisko' AND `haslo` = '$haslo'")); 
$sql = mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `imie` = '. $imie .' AND `nazwisko` = '. $nazwisko .' AND `haslo` = '. $haslo. ' ")); 
$sql = mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `imie` = ' ". $imie ."' AND `nazwisko` = '". $nazwisko ."' AND `haslo` = '". $haslo." ' ")); 
0

Już znalazłem odpowiedź - odwołanie w formularzu robiłem do innego pliku, bo próbowałem to robić równolegle na 2 plikach. W tamtym drugim nie było podmianki $haslo na md5($haslo). Przy okazji zrobiłem już to w zapytaniu do sql, a nie przez zmianę zmiennej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1