[PHP] Problem ze skryptem


(Bartekviper) #1

Mam problem ze skryptem. Wywala mi, że podałem złe dane a ja podaję dobre dane. Proszę o sprawdzenie:

<?

$pass = $_POST["haslo"];

$user = $_POST["user"];


function isLegal($str)

{

        if (strpos($str, "'") !== false) return false;

        if (strpos($str, "'") !== false) return false;

        return true;

}


function checkPass($pass, $user)

{

        if(!isLegal($pass) && !isLegal($user)){

                return false;

        }


        include "config.php";


        $link = mysql_connect($dbhost, $dbuser, $dbpass);

        $flag = mysql_select_db($db);


        if(!$link || !$flag){

                echo "Problem z połączeniem do bazy danych.";

                return false;

        }


        $zapytanie = "SELECT * FROM ".$dbprefix."users WHERE users_login='".$user."'";

        $wynik = mysql_query($zapytanie);

        if(!$results){

                echo "Problem z baządanych.";

                return false;

        }


        $row = myssql_fetch_row($wynik);

        if(!$row){

                mysql_close($link);

                return false;

        }

        if($row[0] != md5($pass)){

                mysql_close($link);

                return false;

        }

        else {

                mysql_close($link);

                return true;

        }

}

if(!checkPass($pass, $user)){

        echo "

";
    echo "Nieprawidłowe dane!";

    echo "</h2></center>"; } else { include "user.php"; } ?\>[/code]


(Airborn) #2
$row = ($wynik);

o jedno s za dużo w słowie mysql

if(!$results){

tutaj chyba zła nazwa zmiennej?


(Bartekviper) #3

Poprawiłem i nadal nieprawidłowe dane :stuck_out_tongue:


(Airborn) #4

dodaj sobie może wyświetlanie zmiennych zapytanie, wynik i row, możliwe że gdzieś będziesz miał błąd w ich strukturze. Zakładam, że strukturę bazy danych znasz dobrze i w tym miejscu nie ma błędu, ale łatwiejsze może się okazać $row = mysql_fetch_array($wynik); i potem odwoływanie się do wyników przez $row[user_pass] czy jak tam nazwałeś swoją kolumnę w db, dużo trudniej wówczas o błąd


(Bartekviper) #5

Wprowadziłem te zmiany i nadal to samo. Podkreślam, że używam off-line Krasnal Serv 2.7


(Waldemi) #6

Nie bardzo wiem skąd wziąłeś zmienną $result jeśli wynikiem zapytania jest zmienna $wynik. Może spróbujesz zmienić i wtedy zobacz.

Poza tym po co pobierasz wszystkie pola z wiersza tabeli "SELECT * FROM" jeżeli potrzebujesz tylko jedno pole (hasło). Może zmienisz zapytanie na np. takie:

SELECT haslo FROM ".$dbprefis."users WHERE user_login=$user

(Bartekviper) #7

Wprowadziłem wszystkie poprawki, które zostały napisane do tej pory i nic :frowning:


(Airborn) #8

bartekvip mówiłem, żebyś dodał echo, pokazujące co zawierają $row $wynik $zapytanie, pokaż to proszę


(Waldemi) #9

Spróbuj zrobić tak:

$pass = md5($_POST["haslo"]);

$wynik = mysql_query("SELECT user_login FROM ".$dbprefix."users WHERE users_login='$user' AND haslo='$pass';");

$istnieje = mysql_num_rows ($wynik);

  if ($istnieje == 0) {

       echo "Nieprawidłowe dane lub nie ma takiego użytkownika.";

    } else {

       return true;

    }

U mnie ten sposób działa. W zapytaniu w miejsce haslo wstaw nazwę pola z tabeli, w którym przechowywane jest hasło.