Link aan phpbb3
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.
Code (php)
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
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
<?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('&', '&', $url) . '" />';
echo "<div class=\"news_title\"><h3> » 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> » 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>";
}
?>
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('&', '&', $url) . '" />';
echo "<div class=\"news_title\"><h3> » 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> » 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
Gewijzigd op 01/01/1970 01:00:00 door Robin
Verander de time eens naar 10 bijv, duurt het dan langer voordat je doorgestuurd wordt?
dit stuk eens weg:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$redirect = request_var('redirect', "inlog.$phpEx");
$url = redirect($redirect, true);
$time = 3; //Seconden redirect
?>
$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..
Dus bij een link bijvoorbeeld:
Code (php)
1
2
3
4
2
3
4
<?php
$afmelden = append_sid("index.php?p=afmelden");
echo '<p align="center"><a href="'.$afmelden.'">Afmeldsysteem</a></p>';
?>
$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.
Gewijzigd op 01/01/1970 01:00:00 door Robin
Het vreemde is dat dit de verzonden headers zijn van mijn script draaiend op localhost XAMPP:
Quote:
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
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):
Quote:
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
----------------------------------------------------------
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:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$username = request_var('username', '', true);
$password = request_var('password', '', true);
$autologin = (!empty($_POST['autologin'])) ? true : false;
$result = $auth->login($username, $password, $autologin);
?>
$username = request_var('username', '', true);
$password = request_var('password', '', true);
$autologin = (!empty($_POST['autologin'])) ? true : false;
$result = $auth->login($username, $password, $autologin);
?>
Groet,
Robin
Gewijzigd op 01/01/1970 01:00:00 door Robin
Gewijzigd op 01/01/1970 01:00:00 door Robin
[bump na >48 u]Weet iemand het antwoord? Ik zou er echt veel mee geholpen zijn[/bump]