[PHP/MySql] Zbudowanie prostego zapytania z AND

Odpowiedz Nowy wątek
2006-10-03 11:41

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

Witam. Wiem, że pytanie jest dość prostackie, ale jednak mam już dość poszukiwań.
Pisze sobie mały skrypcik, który ma sprawdzić czy login z hasłem się zgadzają.

$query =  ("SELECT * FROM $table WHERE Login LIKE '$login' AND Pwd LIKE 'md5($haslo)'");

Jeśli chodzi o zmienne ręcze głową, że działają. No i czas na mój problem: Dlaczego kiedy to już wrzuce na serwer nie chce działać?. W prawdzie działa, ale to działa na zasadzie, że sie spełni tylko jedno np sam login jest prawidłowy ale hasło już nie koniecznie musi być, lub odwrotnie, że loginu nie musi być, ale hasło jak będzie sie zgadzać to warunek zostanie spełniony.
Gdzie popełniłem błąd ?


wszystko co ludzkie jest mi obce =]

Pozostało 580 znaków

2006-10-03 12:08
Moderator

Rejestracja: 14 lat temu

Ostatnio: 1 rok temu

Lokalizacja: Londyn

0
$query = "SELECT * FROM $table WHERE Login = '$login' AND Pwd = 'md5($haslo)'";

homepage
<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>

Pozostało 580 znaków

2006-10-03 12:22

Rejestracja: 16 lat temu

Ostatnio: 9 lat temu

0

Hmm... Spróbuj może tak:

$query = 'SELECT * FROM `'.$table.'` WHERE `Login`="'.$login.'" AND `Pwd`="'.md5($haslo).'"';

//Added: Ech, Coldpeer był szybszy. Ach, to przeglądanie neta w tabach ;P


Grunt to uziemienie...

Pozostało 580 znaków

2006-10-03 21:33

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

i jeszcze tak na wpół offtopic. Ta gwiazdka między Select a From to jest odnośnie do tabeli ? Bo sądze ze * oznacza wszystko co istnieje, ale wszystkie bazy jakie istnieja czy wszystkie tabele O_o

EDIT

wasze gotowce nie chca wspolpracowac, wiec moze to pomoze nam w naszej wspolpracy, wklejam wam skrypt

<script language="php">
#na formularzu textboxy nazywaja sie T1 oraz T2
$login=$T1;
$haslo=$T2;
#przypisywanie zmiennych
$hostname =  "lo53r.hopto.org";
$username =  "root";
$password =  "krasnal";
$dbName =  "filmy";
$table = "user";
#LACZENIE Z BAZA
MYSQL_CONNECT($hostname, $username, $password) ;
mysql_select_db("$dbName") ;
#ZAPYTANIE
$query = "SELECT * FROM $table WHERE Login = '$login' AND Pwd = 'md5($haslo)'";
$wykonaj=mysql_query($query);
if ($wykonaj)
{
    echo($login);
    echo(" ");
    echo($haslo);
    print("<br>");
    print("<br>");
    print("<br>");
    print("<br>");
    print("<br>");
    echo("DOBRZE");
}
else
{
    echo($login);
    echo($haslo);
}
</script>

wszystko co ludzkie jest mi obce =]

Pozostało 580 znaków

2006-10-04 07:56

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0
lo53r napisał(a)

i jeszcze tak na wpół offtopic. Ta gwiazdka między Select a From to jest odnośnie do tabeli ? Bo sądze ze * oznacza wszystko co istnieje, ale wszystkie bazy jakie istnieja czy wszystkie tabele O_o

SELECT - wybierz

    • wszystkie kolumny tabeli
      FROM - z
      tabela - nazwa tabeli

Nazwe bazy danych wybierasz wczesniej za pomoca mysql_select_db

Pozostało 580 znaków

2006-10-04 17:20
Moderator

Rejestracja: 14 lat temu

Ostatnio: 1 rok temu

Lokalizacja: Londyn

0

Tak, jak napisał GEGE,
SELECT * FROM table pobiera wszystkie kolumny
SELECT pole1, pole2, pole3 - pobiera tylko te trzy pola

Dodam, że * nie jest w niektórych przypadkach zbyt optymalnym rozwiązaniem i jeśli masz tam kolumn 10, a korzystasz z zapytania używając w kodzie tylko dwóch, to opłaca się pobrać tylko te dwa pola.


homepage
<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>

Pozostało 580 znaków

2006-10-04 21:41

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

Ciesze się, że uświadomiliście mnie co oznacza miejsce gwiazdki, ale powracając do tematu. Czemu mi nie działa zapytanie O_o ?


wszystko co ludzkie jest mi obce =]

Pozostało 580 znaków

2006-10-04 22:38
Moderator

Rejestracja: 14 lat temu

Ostatnio: 1 rok temu

Lokalizacja: Londyn

0

Hmm... Funkcja md5 powinna wyjść przed apostrofy:

$query = "SELECT * FROM $table WHERE Login = '$login' AND Pwd = md5('$haslo')";

Druga sprawa to to, że nie wiadomo co to za zmienne $login i $haslo:

if ($wykonaj)
{
        $row = mysql_fetch_array($wykonaj);
        echo $row['login'];
        echo(" ");
        echo $row['haslo'];
        print("<br>");
        print("<br>");
        print("<br>");
        print("<br>");
        print("<br>");
        echo("DOBRZE");
}

Ale i tak kod dość topornie napisany...


homepage
<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>

Pozostało 580 znaków

2006-10-04 22:44

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

niestety takze nie dziala :/ zaczyna mnie to irytowac ;/

edit:
Po nocy ochlonalem i doszedlem do wniosku ze ten warunek jest bezsensu. Warunek zawsze przyjmie wartosc true bo zapytanie zawsze prawidlowo sie wykona, a mi by chodzilo by o to aby po wpisaniu loginu i hasla pojawila sie inna strona czyli pierwsza czesc warunku. Mcie jakis pomysl ?
Poza tym ten kod jest tylko jak narazie wstepny. Jeeli chodzi ze nie wiadomo skad sie wzielo login i haslo te zmienne to juz pisze. Mam formularz gdzie sa 2 textboxy nazwane T1 oraz T2 a z tego co wiem przy przesylaniu danych wystarczy powolac sie na nazwe danego obiektu. Prawda ?


wszystko co ludzkie jest mi obce =]

Pozostało 580 znaków

2006-10-05 14:07
Moderator

Rejestracja: 14 lat temu

Ostatnio: 1 rok temu

Lokalizacja: Londyn

0

Możliwe, że masz register_global na off:

$login = $_POST[?T1?];
$haslo = $_POST[?T2?];

homepage
<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>

Pozostało 580 znaków

2006-10-05 15:37

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

mozliwe ale watpie w to ze wzgledu na fakt iz:

<script language="php">
$login=$T1;
echo($login);
</script>

wszystko sie wyswietla jak trzeba</php>


wszystko co ludzkie jest mi obce =]

Pozostało 580 znaków

Odpowiedz

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