[php] Foutmelding maar toch ingelogd?

Pagina: 1
Acties:

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Ik ben bezig met een loginscript, ben er niet zo bedreven in.

Ik heb een user aangemaakt, dat staat in een database.

Nou krijg ik op de site als ik inlog deze foutmelding:
Warning: Supplied argument is not a valid MySQL result resource in /home/sites/site12/users/taxicom/web/login2.php on line 41
Je gebruikersnaam of password klopt niet.
Dat laatste zinnetje komt uit mijn source.
Dit is regel 40 en verder:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$Query = mysql_query("SELECT * FROM leden WHERE Loginnaam = 'Loginnaam' AND LoginPassword = 'Wachtwoord'"); 
    $Results = mysql_num_rows($Query); 

        if ($Results == '1') { 

            $Login = "1"; 

        session_register("Login"); 

            echo "Je bent ingelogd. Klik hier om verder te gaan.\n"; 

        } 
        else { 

        echo " Je gebruikersnaam of password klopt niet.\n"; 

        } 

} 
?>

Het vreemde is dat ik volgens die foutmelding dus niet ingelogd ben, maar als ik op back klik, en dan forward krijg ik "Waarschuwing: Pagina is verlopen". Net als je hier op back klikt na een search.

Wat doe ik nou fout?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

zal wel met post/get te maken hebben denk ik
mis ik niet session_start();
??

Doet iets met Cloud (MS/IBM)


  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Op woensdag 16 januari 2002 11:51 schreef D2k het volgende:
zal wel met post/get te maken hebben denk ik
mis ik niet session_start();
??
Stimmt jah!

Maar dit is niet de hele code van die pagina :)

Als je dat nodig hebt, zeg je het maar.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:21

Janoz

Moderator Devschuur®

!litemod

En mischien een $ voor de vars in je query...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op woensdag 16 januari 2002 11:54 schreef Janoz het volgende:
En mischien een $ voor de vars in je query...
en een addslashes :)

Doet iets met Cloud (MS/IBM)


  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Op woensdag 16 januari 2002 11:54 schreef D2k het volgende:

[..]

en een addslashes :)
Ja, sorry, die staat er wel in. De hele source:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?
 
    session_start(); 
?> 

<html> 
<head> 
<title>Login pagina</title> 
</head> 
<body bgcolor=ffffcc> 
    <CENTER>
        <H1>
        
            <?php 
                $text = "Welkom bij Taxicom"; 
                echo $text
            ?>
        </H1>
    </CENTER>

<form method="post" action="login2.php"> 
<input type="hidden" name="Submit" value="1"> 
<input type="text" name="LoginNaam"> 
<input type="password" name="LoginPassword"> 
<input type="submit" value="Login"> 
</form> 

<p> 

<?php 

If ($Submit) { 

$server = mysql_connect("localhost", "*******", "*******"); 

        @mysql_select_db("*******", $server); 

    $LoginNaam = addslashes($LoginNaam); 
        $LoginPassword = addslashes($LoginPassword); 

$Query = mysql_query("SELECT * FROM leden WHERE Loginnaam = 'Loginnaam' AND LoginPassword = 'Wachtwoord'"); 
    $Results = mysql_num_rows($Query); 

        if ($Results == '1') { 

            $Login = "1"; 

        session_register("Login"); 

            echo "Je bent ingelogd. Klik hier om verder te gaan.\n"; 

        } 
        else { 

        echo " Je gebruikersnaam of password klopt niet.\n"; 

        } 

} 
?> 

</body> 
</html> 
?>

  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Moet je niet de geposte variabelen in de query verwerken?
En $Results bevat een integer dus 1 niet tussen quotjes?
PHP:
1
2
3
4
5
<?
$Query = mysql_query("SELECT * FROM leden WHERE Loginnaam='$Loginnaam' AND LoginPassword='$Wachtwoord'"); 
    $Results = mysql_num_rows($Query); 
    if ($Results == 1) { 
?>

Team ColdFusion


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op woensdag 16 januari 2002 11:57 schreef BreadFan het volgende:

[..]

Ja, sorry, die staat er wel in. De hele source:
[php]
mwoah het kan ook zo
code:
1
$Query = mysql_query("SELECT * FROM leden WHERE Loginnaam = "'.addslashes($Loginnaam).'" AND LoginPassword = "'.addslashes($Wachtwoord).'"");

typo's voorbehouwen
zoiets was het geloof ik :)

Doet iets met Cloud (MS/IBM)


  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Op woensdag 16 januari 2002 11:58 schreef Arnim het volgende:
Moet je niet de geposte variabelen in de query verwerken?
True, had ik eerst wel, heb er tijdens het klooien een keer uitgehaald.
En $Results bevat een integer dus 1 niet tussen quotjes?
PHP:
1
2
3
4
5
<?
$Query = mysql_query("SELECT * FROM leden WHERE Loginnaam='$Loginnaam' AND LoginPassword='$Wachtwoord'"); 
    $Results = mysql_num_rows($Query); 
    if ($Results == 1) { 
?>
Ja dat zou goed kunnen. En de regel daarop moeten ze ook weg? En dan ff tussen haakjes zetten?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:21

Janoz

Moderator Devschuur®

!litemod

Pas wel op... Vaak staat magic_quotes_gpc aan. Daardoor zijn de get post en cookie vars al automatisch ge'addslashed'. Als je het dan nog een keer doet, krijg je er dubbele slashes in staan...


Mischien kun je
PHP:
1
2
3
4
<?
 $LoginNaam = addslashes($LoginNaam); 
        $LoginPassword = addslashes($LoginPassword); 
?>

beter vervangen door:
PHP:
1
2
3
4
5
6
<?
if (!magic_quotes_gpc()){
  $LoginNaam = addslashes($LoginNaam); 
  $LoginPassword = addslashes($LoginPassword);
}
?>

Daarnaast heb je nog steeds geen $ (dus vars) in je query staan.....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Op woensdag 16 januari 2002 12:01 schreef BreadFan het volgende:
En de regel daarop moeten ze ook weg? En dan ff tussen haakjes zetten?
Zou ik ze inderdaad ook weghalen. En haakjes :? Volgens mij niet.

Team ColdFusion


  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Op woensdag 16 januari 2002 12:04 schreef Janoz het volgende:
...
Nu krijg ik deze error:
Fatal error: Call to undefined function: magic_quotes_gpc() in /home/sites/site12/users/taxicom/web/login2.php on line 33
Dat is hem dus niet.

die $ heb ik aan de vars toegevoegd.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:21

Janoz

Moderator Devschuur®

!litemod

Op woensdag 16 januari 2002 12:08 schreef BreadFan het volgende:

[..]

Nu krijg ik deze error:
[..]
Ik doe het ook maar ff uit mijn hoofd.. De manier zoals ik het boven aangeef zorgt ervoor dat je script onafhankelijk wordt van je server instellingen (Eigenlijk moet je er dan ook rekening mee houden dat globals uit kunnen staan, maar dat is mischien beter iets voor de volgende keer)

Ik zal wel ff voor je in de manual kijken hoe die functie precies heet (Zou je natuurlijk zelf ook kunnen doen)

UIt de manual (die is best handig!!!) bleek dat het de functie get_magic_quotes_gpc() was. (Er moet dus nog get_ voor)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Op woensdag 16 januari 2002 12:41 schreef Janoz het volgende:
UIt de manual (die is best handig!!!) bleek dat het de functie get_magic_quotes_gpc() was. (Er moet dus nog get_ voor)
Klopt, ik zat me net al af te vragen waarom hij niet meekleurde, maar bruin bleef. :) Nu werkt het wel, zoals je zei.

Maar die foutmelding blijf ik krijgen, op die regel met $Results = mysql_num_rows($Query);

:'(

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

or die(mysql_error());

Doet iets met Cloud (MS/IBM)


  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Codeer eens alsvolgt. Dan weet je precies wat er allemaal gebeurt...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$debug = 1;
..
$sql = "SELECT * FROM leden WHERE Loginnaam='$LoginNaam' AND LoginPassword='$LoginPassword' ";
$result = mysql_query( $sql ); 
if ( $debug )
{
    echo "SQL: $sql <BR>\n";
    echo "Result: $result <BR>\n":
    echo "Error: " . mysql_error() . "<BR>\n";
    echo "Num rows: " . mysql_num_rows( $result ) . "<BR>\n";
}
..
?>

Team ColdFusion


  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Op woensdag 16 januari 2002 13:12 schreef Arnim het volgende:
Kewl! :)

Dat heeft idd geholpen! De namen van de kolommen in de db bleken niet exact overeen te komen met wat ik in mijn code had staan.

Als uitvoer van het bovenstaande krijg ik nu oa. dit:
SQL: Resource id #2
Result:
Error:

Warning: Supplied argument is not a valid MySQL result resource in /home/sites/site12/users/taxicom/web/login2.php on line 51
Num rows:
Wat wil dat achter "SQL:" zeggen? En d'r zit kennelijk nog een kleinfoutje in, maar da's niet erg.

  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
Hij zegt dat de query gelukt is en geeft een verwijzing naar een mysql resultset.

Wat eigenlijk de bedoeling is, dat je achtereenvolgens exact weergeeft welke query uitgevoerd wordt, of er een resultset uitkomt, of er een error is en hoeveel records dat hij teruggeeft. Dan moet je wel de variabelen goed gebruiken.

Team ColdFusion

Pagina: 1