[OOP] call to private from invalid context

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Tikkes C

Tikkes C

12/02/2009 16:43:00
Quote Anchor link
hoi iedereen,

ik krijg de volgende error:
Fatal error: Call to private login::login() from invalid context in /home/waranderock.be/www/Chiro/login2.php on line 34

mijn class script is:
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
<?PHP

class login
{

    protected $username;
    protected $password;
    
    public function getUsername()
    {

        return $this->username;
    }

    
    public function getPassword()
    {

        return $this->password;
    }

    
    public function setUsername($username)
    {

        $this->username = $username;
    }

    
    public function setPassword($password)
    {

        $this->password = SHA1($password);
    }

    
    private function login()
    {

            $sql    =    "SELECT username FROM users WHERE username='".$this->username."' AND password='".$this->password."'";
            $query    =    mysql_query($sql);
            $object    =    mysql_num_rows($query);
            
            if($object > 0)
            {

                //Making the session and redirecting the user to the announcements
                $_SESSION['ChiroAdmin'] = $this->username;
                
                echo "You were succesfully logged into the admin panel...'".$_SESSION['ChiroAdmin']."'<br />";
                echo "Please wait, you will be redirected...";
                echo "<META HTTP-EQUIV='refresh' content='3; URL=AdminAnnouncements.php' />";
                
            }

            else
            {
                echo "Your details were not correct...";
                include "Footer.php";
                exit;
            }
    }
    
}

?>


login2.PHP
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
<?PHP
session_start();

/**
* Chiro Adminpanel Version 2.0
**
* A StupiSoft Production
* Autor: Tim Cluyts
**
* Copyright 2009
**/


ERROR_REPORTING(E_ALL);
ini_set(1, "display_errors");

require "functions.php";
connectToDb();

require "Classes.php";
?>

<html>
    <head>
        <title>Chiro Adminpanel V2.0 - A StupiSoft production</title>
        <style type="text/stylesheet" src="ChiroStyle.css"></style>
        <script type="text/javascript" src="ChiroJavascript.js"></script>
    </head>
    <body>
    
    <div id="LoginForm">
        <?PHP
        //Login form submition
        if(IsSet($_POST['LoginName']) && IsSet($_POST['LoginPass']) && IsSet($_POST['LoginSubmit']))
        {

            $userLogin = new login;
            $userLogin->setUsername($_POST['LoginName']);
            $userLogin->setPassword($_POST['LoginPass']);
            $userLogin->login();
        }

        
        ?>

        <form method="post">
            <input type="text" name="LoginName" value="Username" />
            <input type="password" name="LoginPass" value="Pass" />
            <input type="submit" name="LoginSubmit" value="Login" />
        </form>
    </div>
    
    </body>
</html>



bedankt :D
 
PHP hulp

PHP hulp

20/04/2024 13:31:45
 
Dennis Mertens

Dennis Mertens

12/02/2009 16:47:00
Quote Anchor link
En je vraag is of wij de oplossing weten neem ik aan?

Ik ben geen OO-expert, maar het heeft een bepaalde functie als een method dezelfde naam heeft als de class.

Gebruik eens een andere functie naam.

En daarnaast zou je die login method niet kunnen aanroepen aangezien het een private is. Maak deze dan public.
 
Jelmer -

Jelmer -

12/02/2009 16:48:00
Quote Anchor link
private voor je method-definitie betekent dat je hem alleen maar kan aanroepen in de context van de klasse zelf. Jij roept hem aan vanuit je script, in de context van alles, de global scope. En dat mag niet, dankzij je private. (Hmmm... )

Oplossing: vervang private door public, en tada!
 
Tikkes C

Tikkes C

12/02/2009 16:50:00
Quote Anchor link
@dennis:
THANKS :D dat was het inderdaad :D
 



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.