login systeem error: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resour
Ik heb geprobeerd een inlog systeem te maken, maar op de een of andere manier blijf ik maar steeds dezelfde error krijgen met mysql_num_rows. en ook als ik de goede gegevens invul blijft hij maar zeggen dat ik een verkeerde username en password heb ingevuld.
Misschien dat jullie me kunnen helpen.
error code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in **********/checklogin.php on line 25
mijn code:
Code (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
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
<?php
ob_start();
$host="*******";
$username="*******";
$password="*******";
$db_name="*******";
$tbl_name="*******";
$link=mysql_connect("$host", "$username", "$password");
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$encrypted_mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$encrypted_mypassword = mysql_real_escape_string($mypassword);
$result=mysql_query("SELECT * FROM ".$tbl_name." WHERE username='".$myusername."' and password='".$mypassword."'", $link);
// Hier zit de fout ergens
$count=mysql_num_rows($result);
if($count==1){
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>
ob_start();
$host="*******";
$username="*******";
$password="*******";
$db_name="*******";
$tbl_name="*******";
$link=mysql_connect("$host", "$username", "$password");
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$encrypted_mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$encrypted_mypassword = mysql_real_escape_string($mypassword);
$result=mysql_query("SELECT * FROM ".$tbl_name." WHERE username='".$myusername."' and password='".$mypassword."'", $link);
// Hier zit de fout ergens
$count=mysql_num_rows($result);
if($count==1){
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>
Als jullie me kunnen helpen zou dit top zijn!
bedankt,
Joost
Gewijzigd op 02/04/2013 12:19:31 door Joost Bouhof
Toevoeging op 02/04/2013 12:27:59:
Ik denk dat er een fout zit in je query.
Volgens mij klopt gewoon je query niet.
Echo je query eens:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$result=mysql_query("SELECT * FROM ".$tbl_name." WHERE username='".$myusername."' and password='".$mypassword."'", $link);
echo $result;
?>
$result=mysql_query("SELECT * FROM ".$tbl_name." WHERE username='".$myusername."' and password='".$mypassword."'", $link);
echo $result;
?>
Klopt dat wat je in de database hebt staan?
Dan moet je een nette foutafhandeling maken wanneer $count dus niet gelijk is aan 1 en dat weergeven.
Verder gebruik je bovenin session_start(); en de global $_SESSION. Daarin zet je never, never nooit een username en password, maar een ding als $_SESSION['logged_in'] die true is ofzo.
Op je andere beveiligde pagina's check je die $_SESSION of deze nog steeds klopt.
Gewijzigd op 02/04/2013 12:31:37 door Bart V B
@Bart: Een query kan je niet op die manier echo'en. Je zult dan de result van de mysql_query zien, waar een mens weinig mee kan.
Veel onnodige variabelen in je script.
Waarom twee keer connecten?
Je kijkt niet of er wel gepost is.
Je query zal mislukt zijn, bouw nette foutafhandeling in.
Zet error_reporting aan.
En, zoals Tim al zei, session_register() is antiek.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$Ssql = "SELECT *
FROM
".$tbl_name."
WHERE
username = '".$myusername."'
AND
password = '".$mypassword."'");
$result = mysql_query($Ssql);
if( $result === FALSE )
{
echo $Ssql;
}
?>
$Ssql = "SELECT *
FROM
".$tbl_name."
WHERE
username = '".$myusername."'
AND
password = '".$mypassword."'");
$result = mysql_query($Ssql);
if( $result === FALSE )
{
echo $Ssql;
}
?>
Toevoeging op 02/04/2013 18:37:42:
oke, mijn eerste probleem is nu opgelost.
Alleen telkens wanneer ik nu inlog met de juiste gebruikersnaam en wachtwoord geeft hij aan dat het fout is.
Dus ik denk dat ik nu een fout heb in mijn query. De gegevens worden dus niet goed uit de database gelezen.
Weten jullie misschien dan hoe ik de query dan moet opstellen?
code:
Code (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
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
<?php
mysql_connect("localhost","*****","*****","*****");
mysql_select_db("*****")or die("cannot select DB");
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$encrypted_mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$encrypted_mypassword = mysql_real_escape_string($mypassword);
$Ssql = "SELECT * FROM users WHERE inlognaam=$myusername AND wachtwoord=$mypassword";
$result = mysql_query($Ssql);
if( $result === TRUE )
{
$_SESSION['myusername'];
$_SESSION['mypassword'];
header("location:login_succes.php");
}
else {
echo "Wrong Username or Password";
}
?>
mysql_connect("localhost","*****","*****","*****");
mysql_select_db("*****")or die("cannot select DB");
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$encrypted_mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$encrypted_mypassword = mysql_real_escape_string($mypassword);
$Ssql = "SELECT * FROM users WHERE inlognaam=$myusername AND wachtwoord=$mypassword";
$result = mysql_query($Ssql);
if( $result === TRUE )
{
$_SESSION['myusername'];
$_SESSION['mypassword'];
header("location:login_succes.php");
}
else {
echo "Wrong Username or Password";
}
?>
verder heb ik wat overbodige variabelen weggehaald zoals jullie zeiden en ik heb nu $_SESSION gebruikt.
Gewijzigd op 02/04/2013 18:37:30 door Joost Bouhof
if( $result === TRUE )
$result zal of false zijn of een #resource bevatten.
oke, ik heb TRUE veranderd naar FALSE. Als ik nu de goede combinatie inlognaam en wachtwoord invul word ik door gelinkt naar login_succes.php Maar als ik inlog met verkeerde gegevens word ik hier ook naar toegeleid.
If not FALSE (dus TRUE) word de if uitgevoerd.
Bij FALSE de else.
Gewijzigd op 02/04/2013 19:44:29 door Pieter Rekvelt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$_SESSION['ingelogd'] = false;
if( $result === false )
{
echo "ERROR: ".mysql_error();
}
elseif(mysql_num_rows($result) != 1)
{
echo ' Foute inloggegevens';
}
else
{
$_SESSION['ingelogd'] = true;
header("location:login_succes.php");
}
?>
$_SESSION['ingelogd'] = false;
if( $result === false )
{
echo "ERROR: ".mysql_error();
}
elseif(mysql_num_rows($result) != 1)
{
echo ' Foute inloggegevens';
}
else
{
$_SESSION['ingelogd'] = true;
header("location:login_succes.php");
}
?>
Geen inloggegevens in een session zetten.
Gewijzigd op 02/04/2013 20:11:45 door - SanThe -
Pieter Rekvelt op 02/04/2013 19:42:55:
if( ! $result === FALSE ) zou het mi moeten zijn.
If not FALSE (dus TRUE) word de if uitgevoerd.
Bij FALSE de else.
If not FALSE (dus TRUE) word de if uitgevoerd.
Bij FALSE de else.
Als ik het zo doe, geeft hij aan dat ik verkeerde combinatie inlognaam en wachtwoord heb ingevuld. Zowel bij goede combinatie als foute.
Toevoeging op 02/04/2013 22:23:55:
- SanThe - op 02/04/2013 20:08:44:
Geen inloggegevens in een session zetten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$_SESSION['ingelogd'] = false;
if( $result === false )
{
echo "ERROR: ".mysql_error();
}
elseif(mysql_num_rows($result) != 1)
{
echo ' Foute inloggegevens';
}
else
{
$_SESSION['ingelogd'] = true;
header("location:login_succes.php");
}
?>
$_SESSION['ingelogd'] = false;
if( $result === false )
{
echo "ERROR: ".mysql_error();
}
elseif(mysql_num_rows($result) != 1)
{
echo ' Foute inloggegevens';
}
else
{
$_SESSION['ingelogd'] = true;
header("location:login_succes.php");
}
?>
Geen inloggegevens in een session zetten.
Als ik deze code neer plak
Code (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
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
<?php
mysql_connect("localhost","****","*******","******");
mysql_select_db("**********")or die("cannot select DB");
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$encrypted_mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$encrypted_mypassword = mysql_real_escape_string($mypassword);
$Ssql = "SELECT * FROM users WHERE inlognaam=$myusername AND wachtwoord=$mypassword";
$result = mysql_query($Ssql);
$_SESSION['ingelogd'] = false;
if( $result === false )
{
echo "ERROR: ".mysql_error();
}
elseif(mysql_num_rows($result) != 1)
{
echo ' Foute inloggegevens';
}
else
{
$_SESSION['ingelogd'] = true;
header("location:login_succes.php");
}
?>
mysql_connect("localhost","****","*******","******");
mysql_select_db("**********")or die("cannot select DB");
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$encrypted_mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$encrypted_mypassword = mysql_real_escape_string($mypassword);
$Ssql = "SELECT * FROM users WHERE inlognaam=$myusername AND wachtwoord=$mypassword";
$result = mysql_query($Ssql);
$_SESSION['ingelogd'] = false;
if( $result === false )
{
echo "ERROR: ".mysql_error();
}
elseif(mysql_num_rows($result) != 1)
{
echo ' Foute inloggegevens';
}
else
{
$_SESSION['ingelogd'] = true;
header("location:login_succes.php");
}
?>
krijg ik deze error:
ERROR: Unknown column '******' in 'where clause'
Dus ik weet niet.
(****** = inlognaam )
Gewijzigd op 02/04/2013 23:50:18 door Joost Bouhof
$Ssql = "SELECT * FROM users WHERE inlognaam='" . $myusername . "' AND wachtwoord='" . $mypassword . "'";
Hartelijk dank voor jullie hulp!
joost
Even een tip haal de database gegevens uit je code. Nu weet iedereen je database gegevens.