Call to a member function on a non-object

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouter reyntjens

wouter reyntjens

08/03/2007 23:39:00
Quote Anchor link
Ik ben een login script aan het bouwen, maar ik krijg altijd deze error (Call to a member function on a non-object), dit is mijn code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>

Ziet iemand de fout?

Alvast bedankt
 
PHP hulp

PHP hulp

17/11/2024 03:23:22
 
Stien ss

stien ss

08/03/2007 23:44:00
Quote Anchor link
Je roept ergens een functie van een variable aan, alleen is dit geen object.
Hier gebruik je geen objecten, dus misschien in connect.php?

En je $sql klopt niet met quotes ed, zoiets moet het zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$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
 
Wouter reyntjens

wouter reyntjens

08/03/2007 23:55:00
Quote Anchor link
Ik was een tutorial aan het volgen, maar daar liep het een en het ander mis.

EDIT : het ging hierover (http://phpsec.org/articles/2005/password-hashing.html)

Is deze query dan correct?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$sql = mysql_query("INSERT INTO login (username,password) VALUES('$username','$password') ")
                or die(mysql_error());
Gewijzigd op 01/01/1970 01:00:00 door wouter reyntjens
 
Jan Koehoorn

Jan Koehoorn

09/03/2007 00:03:00
Quote Anchor link
Hier zit je fout:

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){
 
Winston Smith

Winston Smith

09/03/2007 00:04:00
Quote Anchor link
Moet waarschijnlijk zijn:
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
$sql = mysql_query("INSERT INTO login (username,password) VALUES('" . $username . "','" . $password . "') ")
                or die(mysql_error());
 
Wouter reyntjens

wouter reyntjens

10/03/2007 21:13:00
Quote Anchor link
Ik heb nog een probleempje met een update script, dit is de code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    $query = "UPDATE login SET lastactive = NOW() WHERE username = $_SESSION['user']";
    $result = mysql_query($query);


Wat is er hier mis aan?
 
Stefan van Iwaarden

Stefan van Iwaarden

10/03/2007 21:16:00
Quote Anchor link
een foutmelding is altijd handig, maar voor zover ik kan zien is je where clause fout, je waarde moet namelijk tussen quotes staan.
Daarnaast moet je er ook voor zorgen dat lastactive een datetime is.
zo dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$query = "UPDATE login SET lastactive = NOW() WHERE username = '".$_SESSION['user']."'";
 
Wouter reyntjens

wouter reyntjens

10/03/2007 21:19:00
Quote Anchor link
Het probleem is dat er geen foutmeldingen zijn:s, dus kan ik ze niet tonen

EDIT : probleem is opgelost, de mysql server (local) was uitgevallen.
Gewijzigd op 01/01/1970 01:00:00 door wouter reyntjens
 
Joren de Wit

Joren de Wit

10/03/2007 23:32:00
Quote Anchor link
Tip: zet altijd dit bovenaan je script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

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...
 
Wouter reyntjens

wouter reyntjens

10/03/2007 23:38:00
Quote Anchor link
Bedankt voor de tip, ik zal het gebruiken
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.