Goedemorgen allemaal,

Ik ben laatst begonnen met het boek Basis Cursus PHP 5.4 van Victor Peters. Ben op het punt aangekomen dat er een login script wordt gemaakt. Echter krijg ik dit script niet aan de praat. Er worden geen foutmeldingen gegeven. Het lijkt erop dat de functies niet aangeroepen worden, omdat ik een lege pagina terug krijg.

Mijn vraag is of iemand mij erop kan wijzen wat er fout gaat of pointers kan geven. :)

index.php

<?php

session_start();
// IDENTIFICATIE
if( isset($_SESSION['sid']) || ($_COOKIE['PHPSESSID']) != $_SESSION['sid'] ):
    header('location: ./login.php');
endif;                                   

// VIEW
?>
<div>Gebruiker: <?php echo $_SESSION['naam'] ?></div>
<div id="afmeldformulier">
    <form name="signup" action="login.php" method="POST">
    <input type="submit" name="signout" value="Sign Out Now" />
    </form>
</div>

<?php
// ==========
include('../sessie/toonsessie.inc.php');
echo toon_sessie();

?>



login.php

<?php
// CONTROLLER
session_start();
$sessie = false;
$form = '';

if( isset($_POST['signout']) ):
    vernietig_sessie();
endif;

if( isset($_SESSION['sid']) && $_COOKIE['PHPSESSID'] == $_SESSION['sid']):
    $sessie =true;
    header('location: ./index.php');
else:    
    if( isset($_POST['in']) ):
        $controleer = signin($fouten);
        if( $controleer === false ):
            $form = form_in($fouten);
        else:
            maak_sessie($controleer);
            $sessie = true;           
            header('location: ./index.php');            
        endif;
    elseif( isset($_POST['up']) ):
        if( !signup($fouten) ):
            $form = form_up($fouten);
        else:
            maak_sessie($_POST['naam']);
            $sessie = true;
            header('location: ./index.php');       
        endif;
    elseif( isset($_GET['signin']) ):
        $form = form_in();
    elseif( isset($_GET['signup']) ):
        $form = form_up();
    else:
        $form = form_inup();
    endif;
endif;  

// FUNCTIES
function signin(&$terug) {
    $ok = true;
    if( $_POST['mail'] == '' ):
        $terug['error_mail'] = 'Vul uw e-mailaders in.';
        $ok &= false;
    endif;
    if( $_POST['pass'] == ''):
        $terug['error_pass'] = 'Vul uw wachtwoord in.';
        $ok &= false;
    endif;
    
    if( $ok ):
        // Controleer gegevens in de database
        // haal NAAM uit database
        if( true ):
            return "NAAM";
        else:
            $terug['error_mail'] = 'Gegevens niet correct.';
            return false;
        endif;
    else:
        return false;
    endif;
}

function signup(&$terug) {
    $ok = true;
    if( $_POST['naam'] == '' ):
        $terug['error_naam'] = 'Vul uw naam in.';
        $ok &= false;
    endif;
    if($_POST['mail'] == ''):
        $terug['error_mail'] = 'Vul uw e-mail in.';
        $ok &= false;
    endif;
    if( $_POST['pass1'] == '' || $_POST['pass1'] != $_POST['pass2'] ):
        $terug['error_pass'] = 'Vul tweemaal hetzelfde wachtwoord in.';
        $ok &= false;
    endif;
    
    if( $ok ):
        // Controleer in database of e-mail nog niet in gebruik is
        if( true ):
        // Maak nieuw record in database
            return true;
        else: 
            $terug['error_mail'] = 'E-mailadres al in gebruik.';
            return false;
        endif;
    else:
        return false;
    endif;
}

function maak_sessie($naam) {
    $_SESSION['sid'] = session_id();
    $_SESSION['naam'] = $naam;
}

function vernietig_sessie() {
    session_unset();
    session_destroy();
    setcookie('PHPSESSID', '', time()-3600, './');
}

function form_inup() {
    return '
        <h1>Sign Up & In</h1>
        <a href ="'.$_SERVER['SCRIPT_NAME'].'?signin">Sign In</a> of
        <a href ="'.$_SERVER['SCRIPT_NAME'].'?signup">Sign Up</a>
        ';
}

function form_in( $gegevens = array() ) {
    $regels = '<h1>Sign In</h1>';
    $regels .= '<form name="signin" action="" method="POST">';
    if( isset($gegevens['error_mail']) ):
        $regels .= $gegevens['error_mail'].'<br />';
    endif;
    $regels .= '
        E-mailadres:
        <input type="text" name="mail" value="'.$_POST['mail'].'" /><br />
        ';
    if( isset($gegevens['error_pass']) ):
        $regels .= $gegevens['error_pass'].'<br />';
    endif;
    $regels .= '
        Wachtwoord:
        <input type="password" name="pass" value="" /><br />
        <input type="submit" name="in" value="Sign In Now" /><br />
        ';
    $regels .= '</form>';
    return $regels;
}

function form_up( $gegevens = array() ) {
    $regels = '<h3>Sign Up</h3>';
    $regels .= '
        <form name="signup" action="" method="POST">
        ';
    if( isset($gegevens['error_mail']) ):
        $regels .= $gegevens['error_mail'].'<br />';
    endif;
    $regels .= '
        E-Mailaders:
        <input type="text" name="mail" value="'.$_POST['mail'].'" /><br />
        ';
    if( isset($gegevens['error_naam']) ):
        $regels .= $gegevens['error_naam'].'<br />';
    endif;
    $regels .= '
        Naam:
        <input type="text name="naam" value="'.$_POST['naam'].'" /><br />
        ';
    if( isset($gegevens['error_pass']) ):
        $regels .= $gegevens['error_pass'].'<br />';
    endif;
    $regels .= '
        Wachtwoord:
        <input type="password" name="pass1" value="" /><br />
        Herhaal wachtwoord:
        <input type="password" name="pass2" value="" /><br />
        <input type="submit"name="up" value="Sign Up Now" /><br />
        ';
    $regels .= '</form';
    return $regels;
}

function form_out() {
    return '
        <div><form name="signup" action="./" method="POST">
        <input type="submit" name="signout" value="Sign Out Now" />
        </form></div>
        ';
}
?>

Zet dit eens bovenin je script:
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
?>
@SanThe,

Je bent me net voor, lijkt of idd error_reporting niet aan staat of te laag staat.
Heb nog even in de php.ini gekeken, maar display_errors = On en display_startup_errors = On.

Edit:

Bij wamp en xampp krijg ik een lege pagina.
@Bauke,

Maar wat is je error reporting waarde?

Zet dit even in je script bovenaan om alle error's weer te geven als error reporting al aan staat in je .ini
error_reporting(E_ALL);
Ik krijg deze 3 meldingen steeds terug zie ik nu:



[17-Jun-2013 07:59:38 UTC] PHP Notice:  Undefined index: sid in C:\xampp\htdocs\LifeCycle\login\index.php on line 8

[17-Jun-2013 07:59:38 UTC] PHP Notice:  Undefined index: naam in C:\xampp\htdocs\LifeCycle\login\index.php on line 14

[17-Jun-2013 07:59:38 UTC] PHP Notice:  Undefined index: sid in C:\xampp\htdocs\LifeCycle\sessie\toonsessie.inc.php on line 5

Even kort wat je foutmeldingen betekenen: ze worden niet gedefineert: er zit geen waarde aan vast. Je moet altijd controleren of een variabele/cookie/sessie is gezet. Om een voorbeeld te geven in bovenstaand script op lijn 11: je zegt dat je script direct de sessie met de username moet echo'en, maar wat nou als die niet gevuld is? Dan krijg je de error undefined index. Wat je heel goed doet op de 5e regel in bovenstaande code, is gebruik maken van empty en isset.

<?php
if (isset($_SESSION['username'])){
//Sessie bestaat
} else {
//Sessie bestaat niet
}
?>
Maar kan het zo zijn dat als hij $_SESSION['sid'] niet herkend wordt het hele script niet meer werkt? De login.php zorgt ervoor dat als die niet bestaat aangemaakt wordt. Of zit ik er dan naast? =)
In je index.php is regel 8 leeg, raar dat je daar een notice op krijgt.

Is je index.php wel het complete script? Ik snap niet dat je een notice krijgt krijgt voor unidentified op een lege regel
index.php en login.php zijn de enigste.

Dat is idd vreemd, maar dat geeft hij nu niet meer aan:


[17-Jun-2013 10:07:54 UTC] PHP Notice:  Undefined index: sid in C:\xampp\htdocs\LifeCycle\login\index.php on line 6




<?php
// IDENTIFICATIE
if( isset($_SESSION['sid']) || ($_COOKIE['PHPSESSID']) != $_SESSION['sid'] ):
?>

moet dat niet zijn:
<?php
// IDENTIFICATIE
if( !isset($_SESSION['sid']) || ($_COOKIE['PHPSESSID']) != $_SESSION['sid'] ):
?>

het verschil is het NOT teken, (de !)

Reageren