Beste phpers,

Ik heb sinds kort een nieuwe webhost. Nu heb ik alle scripts die ik had geupload hierheen, maar wat blijkt nu, het werkt (na de instellingen voor de nieuwe server te hebben gebruikt) heel anders dan mijn oude vertrouwde XAMPP servertje.
Ik heb onderstaande code uit de tutorial van superwauwie en die vervolgens uitgebreid. Dit script controleert de logins die je invoert met de phpBB3 database. Ik heb nu de simpele versie van het script, zie onderstaand, geupload naar www.jckomeet.nl/inlog.php . Je kunt inloggen met username: test, password: test123.


<?php
define('IN_PHPBB', true);
$phpbb_root_path = "forum/"; //pad naar PHPBB3
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session
$user->session_begin();
$auth->acl($user->data);
$user->setup();

if(!$user->data['is_registered'])
{
if($_POST['login'])
{


    $username = request_var('username', '', true);
    $password = request_var('password', '', true);
    $autologin = (!empty($_POST['autologin'])) ? true : false;

    $result = $auth->login($username, $password, $autologin);

    if ($result['status'] == LOGIN_SUCCESS)
    {
        
        $redirect = request_var('redirect', "inlog.$phpEx");
    $url = redirect($redirect, true);
    $time = 3;    //Seconden redirect

    echo '<meta http-equiv="refresh" content="' . $time . ';url=' . str_replace('&', '&amp;', $url) . '" />';
    echo "<div class=\"news_title\"><h3> &raquo; Ingelogd!.</h3></div>";
    echo "<p align=\"center\">Je bent ingelogd.</p>";
    }
    else
    {
        echo"FOUT! er is wat mis gegaan met het invullen van de gegevens. probeer het opnieuw";
    }

}
else
{
?>
<form method="post" action="<?php $_SERVER['PHP_SELF'];?>"><!-- ?mode=login -->

<p>Username: <input name="username" type="text" id="username" /></p>

<p>Password: <input name="password" type="password" id="password" /></p>

<p><input name="login" class="mainoption" value="Log in" type="submit"></p>

</form>
<?
}
}
else  //je bent dus ingelogd...
{
echo "<div class=\"news_title\"><h3> &raquo; User Menu.</h3></div>";
echo('<p align="center">Welcome '.$user->data['username'].'!</p>');
echo "<p align=\"center\"><a href=\"logout.php\">Log Out.</a></p>";
}
?> 

Wat blijkt nu, als ik inlog zegt ie eerst dat ik ben ingelogd, maar daarna lijkt het net of mijn sessie wordt beëindigt. Hoe kan dit?

Grt,
Robin
Ik heb het idee dat het hiermee te maken heeft


    $url = redirect($redirect, true);
    $time = 3;    //Seconden redirect


Verander de time eens naar 10 bijv, duurt het dan langer voordat je doorgestuurd wordt?
Uiteraard duurt het dan langer, 10 seconden, maar dan word ik opnieuw teruggestuurd naar het loginscherm..., terwijl dit zou moeten worden aangeroepen.

<?php
else  //je bent dus ingelogd...
{
echo "<div class=\"news_title\"><h3> &raquo; User Menu.</h3></div>";
echo('<p align="center">Welcome '.$user->data['username'].'!</p>');
echo "<p align=\"center\"><a href=\"logout.php\">Log Out.</a></p>";
}
?>

Dat geef je zelf toch niet aan dus ik probeer mee te denken ;)..!

dit stuk eens weg:

<?php
    $redirect = request_var('redirect', "inlog.$phpEx");
    $url = redirect($redirect, true);
    $time = 3;    //Seconden redirect
?>


En schrijf daar eens een Session waarin je username wordt opgeslagen, een session ID, en bijv ingelogd wordt geset naar 1. En geef vervolgens een header() naar inlog.php en check hier vervolgens bovenaan ofdat er een session is geset die overeenkomt met de username o.i.d.

En anders, gebruik een ander script. Er zijn er genoeg op internet..
Ik heb het ietsje anders gedaan, ik heb aan de links overal append_sid(); toegevoegd, een functie in phpbb3.
Dus bij een link bijvoorbeeld:

<?php
$afmelden = append_sid("index.php?p=afmelden");
echo '<p align="center"><a href="'.$afmelden.'">Afmeldsysteem</a></p>';
?>

Het probleem is dat er nu een session id in de link moet zitten, anders herkent het systeem de user niet. Zijn er alternatieven te bedenken?

Groet,
Robin

Edit:Ook heb ik geprobeerd om de SID in een $_SESSION['sid'] te zetten, wat ook niet werkt.
Ik heb van iemand gehoord dat ik blijkbaar dubbele cookies verstuur:

Het vreemde is dat dit de verzonden headers zijn van mijn script draaiend op localhost XAMPP:
HTTP/1.x 200 OK
Date: Wed, 30 Sep 2009 18:32:12 GMT
Server: Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4 Perl/v5.10.0
X-Powered-By: PHP/5.3.0
Set-Cookie: phpbb3_7rogb_u=2; expires=Thu, 30-Sep-2010 18:32:12 GMT; path=/; HttpOnly
Set-Cookie: phpbb3_7rogb_k=; expires=Thu, 30-Sep-2010 18:32:12 GMT; path=/; HttpOnly
Set-Cookie: phpbb3_7rogb_sid=383291617ca75bd7a73df43f67bfad77; expires=Thu, 30-Sep-2010 18:32:12 GMT; path=/; HttpOnly
Content-Length: 320
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

Hierna, als de pagina wordt doorgestuurd naar index.php, worden deze cookies gebruikt en dus niet opnieuw aangemaakt.

en dit van de 'echte' site (http://jckomeet.nl):

HTTP/1.x 200 OK
Date: Wed, 30 Sep 2009 18:33:22 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.10
Set-Cookie: phpbb3_jvspm_u=1; expires=Thu, 30-Sep-2010 18:33:22 GMT; path=/; domain=forum.jckomeet.nl; HttpOnly
Set-Cookie: phpbb3_jvspm_k=; expires=Thu, 30-Sep-2010 18:33:22 GMT; path=/; domain=forum.jckomeet.nl; HttpOnly
Set-Cookie: phpbb3_jvspm_sid=5972b7a64**********; expires=Thu, 30-Sep-2010 18:33:22 GMT; path=/; domain=forum.jckomeet.nl; HttpOnly
Set-Cookie: phpbb3_jvspm_u=2; expires=Thu, 30-Sep-2010 18:33:22 GMT; path=/; domain=forum.jckomeet.nl; HttpOnly
Set-Cookie: phpbb3_jvspm_k=; expires=Thu, 30-Sep-2010 18:33:22 GMT; path=/; domain=forum.jckomeet.nl; HttpOnly
Set-Cookie: phpbb3_jvspm_sid=5f2f91*********; expires=Thu, 30-Sep-2010 18:33:22 GMT; path=/; domain=forum.jckomeet.nl; HttpOnly
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 234
Keep-Alive: timeout=1, max=10000
Connection: Keep-Alive
Content-Type: text/html
----------------------------------------------------------

En vervolgens worden bij het doorsturen nieuwe cookies aangemaakt.

Dit terwijl het precies hetzelfde script is. Dit is overigens de output van het hele script, die in de root is te zien. (http://jckomeet.nl)
Hoe zou dit kunnen komen? Het enige wat ik doe is de common.php van phpBB3 includen en daarmee inloggen met de volgende code:

<?
    $username = request_var('username', '', true);
    $password = request_var('password', '', true);
    $autologin = (!empty($_POST['autologin'])) ? true : false;

    $result = $auth->login($username, $password, $autologin);
?>


Groet,
Robin
Heeft iemand een idee? Ik snap echt niet hoe het kan dat hij op de server 2x meer cookies set dan mijn xampp servertje.....
[bump na >48 u]Weet iemand het antwoord? Ik zou er echt veel mee geholpen zijn[/bump]

Reageren