[OOP] PHP 5.2.2 Using $this when not in object context

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jordy

Jordy

05/06/2007 18:18:00
Quote Anchor link
Hallo mensen,

ben sinds kort bezig met mijn portfolio systeem en was bezig een admin class te bouwen. Nou verloopt dit goed op 1 fatale error na, waar je dus logisch niet omheen kan.

deze error : Using $this when not in object context , krijg ik nadat ik probeer in te loggen. Ik heb al onderzoek gedaan op internet en kwam tot de conclusie dat je $this niet buiten een object mag gebruiken. Het vreemde is, dat ik $this alleen gebruik binnen het object Admin, en daarbuiten niet, toch krijg ik deze error midden in mijn object. hier mijn code van class Admin:

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php

class Admin
{
    public $Id;
    public $Username;
    public $Password;
    public $LoggedIn;

    public function __construct()
    {

        $this->LoggedIn = false;
    }


    public function Login($username, $password)
    {


        $password = md5($password);

        $sql = "SELECT * FROM `admin` WHERE `admin_username` = '".$username."' AND `admin_password` = '".$password."'";

        $result = mysql_query($sql);

        if(!$result)
        {

            $this->LoggedIn = false;
            die(mysql_error());
        }

        else
        {
            if(mysql_num_rows($result) == 1)
            {

              $this->LoggedIn = true;
              $this->Id = session_id();
              $this->Username = $username;
              $this->Password = $password;

              $_SESSION['admin'] = true;
              $_SESSION['pass'] = $password;

              return true;
            }

            else
            {
                $this->LoggedIn = false;
                return false;
            }
        }
    }


    public function Logout()
    {

        if($this->Id != '')
        {

            unset($_SESSION['admin']);
            unset($_SESSION['pass']);

            $this->LoggedIn = false;
        }
    }


    public function CheckLogin()
    {

        return $this->LoggedIn;
    }
}



?>


hij geeft aan op line 34, dat daar de error zich bevind.

Hebben jullie enig idee wat het probleem is?
 
PHP hulp

PHP hulp

16/04/2024 20:46:53
 
Bo az

Bo az

05/06/2007 18:26:00
Quote Anchor link
Als ik die code in een documentje plak krijg ik geen error ...
 
Jordy

Jordy

05/06/2007 18:33:00
Quote Anchor link
vreemd, ik test het op een 5.2.2 op Linux draaiende server.

En ik krijg deze error pas, wanneer ik probeer in te loggen, zodra ik de function Login aanroep, daarvoor geeft hij geen fouten
Gewijzigd op 01/01/1970 01:00:00 door Jordy
 
Niels Janssen

Niels Janssen

05/06/2007 18:38:00
Quote Anchor link
En hoe roep je login aan? Via bijvoorbeeld $admin->Login('blaat', 'blaat'); of Admin::Login('blaat', 'blaat'); ? Dat laatste kan namelijk niet als je $this in de functie gebruikt. (tenminste niet naar mijn weten)
 
Jelmer -

Jelmer -

05/06/2007 18:38:00
Quote Anchor link
Roep je soms Admin::login() aan in plaats van $adminInstantie->login()?

Want waneer je een method op de static manier aanroept (waneer hij dus niet onderdeel is van een instantie) dan bestaat $this idd niet. Dan zal je voor self::$var moeten gaan.
 
Jordy

Jordy

05/06/2007 18:41:00
Quote Anchor link
Dom van mij,

met de class is er niks mis mee, ik was vergeten om in de aanroep de static Admin::Login te vervangen naar $Admin->Login.

iig bedankt
 



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.