Call to a member function on a non-object
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
38
39
40
41
42
43
44
45
46
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
<?php
if ($_SERVER['REQUEST_METHOD']=='POST'){
require_once('../connect.php');
dbconnect();
$username = $_POST['username'];
$password = sha1($_POST['password']);
$sql = "SELECT username FROM login WHERE username = '.$username.' AND password = '.$password.'";
$result = mysql_query($sql);
if($result->mysql_num_rows() <1){
/* Login mislukt */
echo ' De login is mislukt.';
}else{
/*login gelukt*/
echo 'De login is gelukt.';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="login.php">
<table border="1">
<tr>
<td>Username:</td>
<td><input type="text" name="username" /><br /> </td>
</tr>
<tr>
<td>Password:</td>
<td><input type="text" name="password" /><br /> </td>
</tr>
<td colspan="2"><input type="submit" name="knop" value="Versturen" /> </td>
</tr>
</table>
</form>
</body>
</html>
if ($_SERVER['REQUEST_METHOD']=='POST'){
require_once('../connect.php');
dbconnect();
$username = $_POST['username'];
$password = sha1($_POST['password']);
$sql = "SELECT username FROM login WHERE username = '.$username.' AND password = '.$password.'";
$result = mysql_query($sql);
if($result->mysql_num_rows() <1){
/* Login mislukt */
echo ' De login is mislukt.';
}else{
/*login gelukt*/
echo 'De login is gelukt.';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="login.php">
<table border="1">
<tr>
<td>Username:</td>
<td><input type="text" name="username" /><br /> </td>
</tr>
<tr>
<td>Password:</td>
<td><input type="text" name="password" /><br /> </td>
</tr>
<td colspan="2"><input type="submit" name="knop" value="Versturen" /> </td>
</tr>
</table>
</form>
</body>
</html>
Ziet iemand de fout?
Alvast bedankt
Hier gebruik je geen objecten, dus misschien in connect.php?
En je $sql klopt niet met quotes ed, zoiets moet het zijn:
Code (php)
1
2
3
2
3
<?php
$sql = "SELECT username FROM login WHERE username = '".$username."' AND password = '".$password."'";
?>
$sql = "SELECT username FROM login WHERE username = '".$username."' AND password = '".$password."'";
?>
EDIT: ik zie het al je doet $result->mysql_num_rows(). Waarom die $result-> ervoor?
Gewijzigd op 01/01/1970 01:00:00 door stien ss
EDIT : het ging hierover (http://phpsec.org/articles/2005/password-hashing.html)
Is deze query dan correct?
Code (php)
1
2
2
$sql = mysql_query("INSERT INTO login (username,password) VALUES('$username','$password') ")
or die(mysql_error());
or die(mysql_error());
Gewijzigd op 01/01/1970 01:00:00 door wouter reyntjens
if($result->mysql_num_rows() <1){
PHP denkt dat je een class result hebt aangemaakt met een memberfunctie mysql_num_rows.
Verander je syntax in:
if(mysql_num_rows() < 1){
if(mysql_num_rows($result) <1)
Je query kan je beter zo doen, alhoewel die van jou ook wel goed is denk ik.
Evt. kan je (username,password) weglaten als dat de enige velden in je tabel zijn (maar dan moet je wel rekening houden met een evt. unieke sleutel (id)).
Code (php)
1
2
2
$query = "UPDATE login SET lastactive = NOW() WHERE username = $_SESSION['user']";
$result = mysql_query($query);
$result = mysql_query($query);
Wat is er hier mis aan?
Daarnaast moet je er ook voor zorgen dat lastactive een datetime is.
zo dus:
EDIT : probleem is opgelost, de mysql server (local) was uitgevallen.
Gewijzigd op 01/01/1970 01:00:00 door wouter reyntjens
Je had dan waarschijnlijk wel een foutmelding gekregen op dbconnect() aangezien het verbinden met je mysql server mislukt. Ik weet niet hoe die functie eruit ziet, maar het blijkt maar weer waarom je ook altijd moet controleren of er wel degelijk een verbinding tot stand gebracht is...
Bedankt voor de tip, ik zal het gebruiken