fout code er uit krijgen

Status
Niet open voor verdere reacties.

kennyvg

Gebruiker
Lid geworden
20 jan 2014
Berichten
5
hallo ik ben bezig met scripten ik heb deze gemaakt maakt alleen bij het uit loggen geeft hij deze code
Fatal error: Call to undefined method user::uitloggen() in /www/99k.org/t/e/s/testkenny/htdocs/index.php on line 12

index.php
PHP:
<?php 
 
// Configuratiebestand beschikbaar maken zodat we toegang hebben tot onze database
require_once "config.ini.php";
// User klasse beschikbaar stellen
require_once "login.class.php"; 
 $user = new user();
if ($_GET['actie'] == "uitloggen")  {
 
 $user = new user();
 $user = new user;
 $user ->uitloggen();
 
}
 
// Nakijken of het forumier submit is
if ($_POST['inloggen']) {
 
    // We maken een nieuw object aan...
 $user = new user;
 // ... en kijken na of de ingevulde gegevens kloppen
 $user ->inloggen();
 
}
 
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Login test</title>
</head>
<body>
<?php 
 
// Nakijken of onze bezoeker reeds is ingelogd...
if($_SESSION) echo '<a href="'.$_SERVER['PHP_SELF'].'?actie=uitloggen">Uitloggen</a>';
else {
 
 ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Gebruikersnaam: <input type="text" name="gebruikersnaam" size="10" />
Wachtwoord: <input type="password" name="wachtwoord" size="10" />
Remember me:<input type="checkbox" checked="checked" name="automatischinloggen" />
<input type="submit" value="Inloggen" name="inloggen" />
</form>
<a href="registeren.php">Registreren</a>
<?php } ?>
</body>
</html>

Registreren.php
PHP:
<?php 
 
// Configuratiebestand beschikbaar maken zodat we toegang hebben tot onze database
require_once "config.ini.php";
// User klasse beschikbaar stellen
require_once "login.class.php"; 
 
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Registreren </title>
</head>
<body>
<?php 
 
// Nakijken of het forumier submit is
if ($_POST['registreren']) {
 
    // We maken een nieuw object aan...
 $user = new user;
 // ... en laten de ingevulde gegevens parsen.
 $user ->registreren();
 
 // Het formulier is nog niet submit, dus tonen we de velden.
} else {
 
?>
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
    <tr>
        <td>Gebruikersnaam*:</td>
        <td><input type="text" name="gebruikersnaam" size="20" /></td>
    </tr>
    <tr>
        <td>Wachtwoord*:</td>
        <td><input type="password" name="wachtwoord1" size="20" /></td>
    </tr>
    <tr>
        <td>Wachtwoord*:<small>(Bevestigen)</small></td>
        <td><input type="password" name="wachtwoord2" size="20" /></td>
    </tr>
    <tr>
        <td>Voornaam:</td>
        <td><input type="text" name="voornaam" size="20" /></td>
    </tr>
    <tr>
        <td>Achternaam:</td>
        <td><input type="text" name="achternaam" size="20" /></td>
    </tr>
    <tr>
        <td>E-mailadres:</td>
        <td><input type="text" name="emailadres" size="20" /></td>
    </tr>
    <tr>
        <td colspan="2">Velden met een * zijn verplicht in te vullen.</td>
    </tr>
    <tr>
        <td>*</td>
        <td><input type="submit" value="Registreren" name="registreren" />
</td>
    </tr>
</table>
<?php
 
}
 
?>
</body>
</html>

login.class.php
PHP:
<?php
 
class user {
 
        function registreren() {
 
                // Zorgen dat we het voorvoegsel, dat we in onze config file hebben ingesteld, kunnen gebruiken
                global $db_prefix;
 
                // Nakijken of alle velden ingevuld werden
                // Je kan hier zelf nog zoveel velden toevoegen als je wil.
                // Als voorbeeld zullen enkel de velden gebruikersnaam en wachtwoord ingevuld moeten zijn.
                
                // Nakijken of alle velden ingevuld zijn...
                // We hoeven niet na te kijken of wachtwoord2 ook ingevuld is, omdat we zo meteen de
                // 2 wachtwoorden gaan vergelijken met elkaar.
                if (strlen(trim($_POST['gebruikersnaam'])) == 0 || strlen(trim($_POST['wachtwoord1'])) == 0) $error = "Gelieve alle verplichte velden in te vullen<br />";
                // De twee ingevulde wachtwoorden vergelijken
                if ($_POST['wachtwoord1'] != $_POST['wachtwoord2']) $error = "Gelieve twee keer hetzelfde wachtwoord in te vullen<br />";
                // Elke gebruikersnaam mag maar één keer voorkomen in de database, dus gaan we dit ook controleren
                if (mysql_result(mysql_query("SELECT COUNT(*) FROM ".$db_prefix."leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."'"),0) != 0) $error = "Gelieve een andere gebruikersnaam te kiezen";
                
                
                // Fout opgetreden?
                if ($error) {
                
                        echo $error;
                        return false;
                        
                } else {
                
                        // Alle ingevulde data wegschrijven naar de database
                        mysql_query("INSERT INTO ".$db_prefix."leden  (
                        gebruikersnaam, 
                        wachtwoord, 
                        voornaam, 
                        achternaam,
                        emailadres, 
                        registratiedatum 
                        ) VALUES (
                        '".$_POST['gebruikersnaam']."', 
                        MD5('".$_POST['wachtwoord1']."'), 
                        '".addslashes(htmlspecialchars($_POST['voornaam']))."' , 
                        '".addslashes(htmlspecialchars($_POST['achternaam']))."' , 
                        '".addslashes(htmlspecialchars($_POST['emailadres']))."' , 
                        '".time()."'
                        )");
                                        
                        // Sessie bijwerkken
                        $_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
                        $_SESSION['uid'] = mysql_insert_id();
                                
                        // ... en de bezoeker op de hoogte brengen dat alles goed is verlopen
                        echo 'Beste '.$_POST['gebruikersnaam'].', <br /><br />
                        Je werd met succes geregistreerd. We hebben je eveens al ingelogd.<br /><br />
                        De crew'; 
                        
                }
                
        }
 
}
 
?>

config.ini.php
PHP:
<?php
 
session_start();
 

$db_prefix = "testkenny_99k_login"; 
// Je host, meestal localhost, mysql of mysqlhost
$mysql_host = "localhost"; 
// Gebruikersnaam om toegang te krijgen tot je database
$mysql_user = "896606_kenny"; 
// ... en bijhorend wachtwoord
$mysql_pwd = "melodie"; 
// last but not least: je tabel
$mysql_db = "leden"; 
 
@$database = mysql_connect($mysql_host,$mysql_user,$mysql_pwd) or die(mysql_error());
@mysql_select_db($mysql_db,$database);
 
?>
 
De functie uitloggen bestaat niet in de class user, zoals ook de foutmelding al aangeeft.
 
En als je dan toch bezig bent, een van de volgende foutmeldingen zou zijn dat de method "inloggen" niet bestaat (op het User object). Maak die dan ook direct aan ;)

Overigens: met een goede IDE krijg je dit soort fouten niet, omdat een IDE methods auto-aanvult, waardoor je direct kunt zien welke methods er op een object beschikbaar zijn.
 
--> [fout]verwijder onmiddelijk de spatie [/fout]
$user ->uitloggen();
$user->uitloggen();

en verder zal u zeker volgende code ergens moeten vinden //onder voorbehoud van kleine schrijffouten fouten
PHP:
class user{
   public function uitloggen(){
      
   }
   public function inloggen(){
      
   }
}
 
Laatst bewerkt:
verwijder onmiddelijk de spatie
$user ->uitloggen();
$user->uitloggen();

No offense, maar het al dan niet verwijderen van deze spatie heeft geen enkele invloed op de werking van de code.
Het is dan ook persoonlijke voorkeur welke notatie iemand hanteert:
PHP:
$user -> functie ();
$user-> functie();
$user ->functie ();
etc.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan