Verlies van de session op nieuwe pagina
ik heb een login script wat werkt met session. nu werkt deze wel op mijn server en met xampp. nu op de server waar die moet komen te staan word de $_session niet over genomen.
ik heb een klein simpel script gemaakt om te testen daar mee krijg ik de Session ook niet mee genomen naar de volgende pagina
invoer.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<? session_start();
echo '<FORM action="test.php" method="post">';
echo '<input type="submit" value="Login" name="submit" id="input_knop_login">';
$_SESSION['test1']="xxxxxxx";
echo $_SESSION['test1'];
echo '</form>';
?>
echo '<FORM action="test.php" method="post">';
echo '<input type="submit" value="Login" name="submit" id="input_knop_login">';
$_SESSION['test1']="xxxxxxx";
echo $_SESSION['test1'];
echo '</form>';
?>
test.php
het lijkt me dat op de pagina test.php gewoon - xxxxxxx - test login zou moeten staan. maar dat is op de server dus niet het geval.
ik hoop dat iemand me hier mee kan helpen, alvast bedankt
Gewijzigd op 25/11/2010 20:47:32 door Nira Duursma
http://www.phphulp.nl/veel-gestelde-vragen/#bbcode
code tags gebruiken.
code tags gebruiken.
ik was al bezig met het een en ander aan te passen dat het duidelijker is :)
error_reporting(E_ALL);
ini_set('display_errors',1);
direct na startsession()
Notice: Undefined index: test1
in /chroot/home/xxxxx/xxxxxxx.nl/html/test/admin/test.php on line 7
- - test
Warning: Unknown: open(/var/lib/php/session/sess_1e402411e5b2bcf339032e35de605bd0, O_RDWR) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
Waar sla je de sessions op?
hoe kan je dat instellen waar je dat opslaat?
Je mag dus niet zomaar sessions files schrijven met startsession()
Zorg dat de session files in je "eigen" subdirectory komen:
Maak een directory onder je DocumentRoot en noem hem: phpsessions
Zet dan je sessie parameter om voordat je startsession() doet:
session_save_path('phpsessions');
Mogelijk ben je dan ook af van Notice: Undefined index: test1 maar check nog wel even je gebruik van quotes en doublequotes.
de test versie werkt nu goed maar als ik die code om zet naar het eigenlijke login schript dan gaat het weer fout.
Notice: Undefined index: login in /chroot/home/xxxxxx/xxxxxxxxx.nl/html/test/admin/login.php on line 9
login script:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?
session_save_path('phpsessions');
session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
if($_SESSION['login']=="1") {
print "Je bent ingelogd als: <strong>". $_SESSION['username']."</strong> <br><a href=index.php?refresh=2>log out.</a>"; ;
}
else {
?>
<FORM action="<? echo 'test.php'; ?>" method="post">
<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left"> </td>
<td></td>
</tr>
<tr>
<td align="left">Naam*:</td>
<td><INPUT type="text" name="username" id="input_box_admin"></td>
</tr>
<tr>
<td align="left"><img src="./../images/blank.png" width="20" height="5" /></td>
<td></td>
</tr>
<tr>
<td align="left">Wachtwoord:</td>
<td><INPUT type="password" name="pass" id="input_box_admin"></td>
</tr>
<tr>
<td> </td>
<td align="left"> </td>
</tr>
<tr>
<td> </td>
<td align="left"><input type="submit" value="Login" name="submit" id="input_knop_login"> </td>
</tr>
<tr>
<td> </td>
<td align="left"> </td>
</tr>
</table>
</form>
<?
}
if(isset($_POST['submit'])) {
$username = trim(strtolower($_POST['username']));
$pass1 = $_POST['pass'];
$dead = "false";
$message = "<font size=1 face=verdana>Fill in the following fields correctly";
if(strlen($username) <= 1 or strlen($username) >=15){
$dead = "true";
$message .= "Username (2-14)<br>";
}
if(strlen($pass1) < 6 or strlen($pass1) > 20) {
$dead = "true";
$message .= "Password (6-20)<br>";
}
if($dead = "false"){
include("../db_acces.php");
mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db("$db_name");
$pass1 = md5($pass1);
$query = mysql_query("SELECT status FROM members WHERE username = '$username' and password = '$pass1'");
$rows = mysql_num_rows($query);
if($rows > 0){
$row = mysql_fetch_assoc($query);
$username = mysql_real_escape_string($username);
$_SESSION['login']="1";
$_SESSION["username"]=$username;
$_SESSION['rank'] = $row['status'];
print "<font size=1 face=verdana> Your logged in as " . $username . ",<br> <a href=logout.php>log out.</a> <a href=memberlist.php>memberlist</a>";
echo $_SESSION['login'].'test login';
}
else{
print "<font size=1 face=verdana color=red>You filled in a wrong password and/or username";
}
}
else{
print $message;
}
}
?>
session_save_path('phpsessions');
session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
if($_SESSION['login']=="1") {
print "Je bent ingelogd als: <strong>". $_SESSION['username']."</strong> <br><a href=index.php?refresh=2>log out.</a>"; ;
}
else {
?>
<FORM action="<? echo 'test.php'; ?>" method="post">
<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left"> </td>
<td></td>
</tr>
<tr>
<td align="left">Naam*:</td>
<td><INPUT type="text" name="username" id="input_box_admin"></td>
</tr>
<tr>
<td align="left"><img src="./../images/blank.png" width="20" height="5" /></td>
<td></td>
</tr>
<tr>
<td align="left">Wachtwoord:</td>
<td><INPUT type="password" name="pass" id="input_box_admin"></td>
</tr>
<tr>
<td> </td>
<td align="left"> </td>
</tr>
<tr>
<td> </td>
<td align="left"><input type="submit" value="Login" name="submit" id="input_knop_login"> </td>
</tr>
<tr>
<td> </td>
<td align="left"> </td>
</tr>
</table>
</form>
<?
}
if(isset($_POST['submit'])) {
$username = trim(strtolower($_POST['username']));
$pass1 = $_POST['pass'];
$dead = "false";
$message = "<font size=1 face=verdana>Fill in the following fields correctly";
if(strlen($username) <= 1 or strlen($username) >=15){
$dead = "true";
$message .= "Username (2-14)<br>";
}
if(strlen($pass1) < 6 or strlen($pass1) > 20) {
$dead = "true";
$message .= "Password (6-20)<br>";
}
if($dead = "false"){
include("../db_acces.php");
mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db("$db_name");
$pass1 = md5($pass1);
$query = mysql_query("SELECT status FROM members WHERE username = '$username' and password = '$pass1'");
$rows = mysql_num_rows($query);
if($rows > 0){
$row = mysql_fetch_assoc($query);
$username = mysql_real_escape_string($username);
$_SESSION['login']="1";
$_SESSION["username"]=$username;
$_SESSION['rank'] = $row['status'];
print "<font size=1 face=verdana> Your logged in as " . $username . ",<br> <a href=logout.php>log out.</a> <a href=memberlist.php>memberlist</a>";
echo $_SESSION['login'].'test login';
}
else{
print "<font size=1 face=verdana color=red>You filled in a wrong password and/or username";
}
}
else{
print $message;
}
}
?>
test.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
session_save_path('phpsessions');
session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
echo '- '.$_SESSION['login'].'- test ';
?>
session_save_path('phpsessions');
session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
echo '- '.$_SESSION['login'].'- test ';
?>
Gewijzigd op 26/11/2010 10:23:22 door Nira Duursma
[code.][/code.]
Off-topic:
Ignore werkt niet met code tags?
Gewijzigd op 26/11/2010 09:45:48 door Pieter van Linschoten
Controleer daar dus eerst op.
de session wordt pas geset als de user is ingelogt voor die tijd is die nog leeg of is het dan beter de session voor die tijd te te defineren?
van maken
Toevoeging op 26/11/2010 09:55:37:
en waarom doe je trouwens dit:
Kan ook gewoon zo:
Ik zou ook de
ja bijv. Of er Toevoeging op 26/11/2010 09:55:37:
en waarom doe je trouwens dit:
Kan ook gewoon zo:
Ik zou ook de
Gewijzigd op 26/11/2010 09:56:40 door Jel le
ik gebruik om dat oorspronkelijk de regel anders was en deze naar een andere pagina verwijst met daarachter nog andere waardes in de tag
Toevoeging op 26/11/2010 10:06:41:
@ gerhard
zet ik je code in de login.php of in de test.php
Toevoeging op 26/11/2010 10:22:27:
als ik het goed begrijp wordt de fout melding niet weer gegevenn als de session leeg is met de ..
maar ik krijg nog steeds de session niet mee en dat is wel de bedoeling
Gewijzigd op 26/11/2010 10:15:05 door Nira Duursma
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
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
<?php session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//jemoetnog wel even controleren of alles ingevuld is ofzo
$query = "SELECT password FROM users WHERE username='".mysql_real_escape_string($_POST['username'])."'";
if(!$result = mysql_query($query)){
//mysqlerror
}
elseif(mysql_num_rows($result) == 0){
//gebruikerbestaat niet
}
else{
while($row = mysql_fetch_assoc($result)){
if (sha1($_POST['password']) != $row['password']){
//verkeerd wachtwoord
}
else{
//goed login sessiee aanmaken
$_SESSION['logged_in'] = true;
$username=$_POST['username'];
$_SESSION['username'] = $username;
header('Location: test.php');
}
}
}
}
else{
//niet gepost action is je login script ik denk index.php?
echo '<FORM action="index.php" method="post">';
echo '<input type="text" name="username">';
echo '<input type="passowrd" name="password">';
echo '<input type="submit" value="Login" name="submit">';
echo '</form>';
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//jemoetnog wel even controleren of alles ingevuld is ofzo
$query = "SELECT password FROM users WHERE username='".mysql_real_escape_string($_POST['username'])."'";
if(!$result = mysql_query($query)){
//mysqlerror
}
elseif(mysql_num_rows($result) == 0){
//gebruikerbestaat niet
}
else{
while($row = mysql_fetch_assoc($result)){
if (sha1($_POST['password']) != $row['password']){
//verkeerd wachtwoord
}
else{
//goed login sessiee aanmaken
$_SESSION['logged_in'] = true;
$username=$_POST['username'];
$_SESSION['username'] = $username;
header('Location: test.php');
}
}
}
}
else{
//niet gepost action is je login script ik denk index.php?
echo '<FORM action="index.php" method="post">';
echo '<input type="text" name="username">';
echo '<input type="passowrd" name="password">';
echo '<input type="submit" value="Login" name="submit">';
echo '</form>';
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
include 'connect.php';
//controleren of ie ingelogd is
if(!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] == false) {
//login bestaat niet ga terug naar login
header('Location: index.php');
exit();
}
else{
//testen of de sessie het doet?
echo $_SESSION['username'];
}
?>
session_start();
include 'connect.php';
//controleren of ie ingelogd is
if(!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] == false) {
//login bestaat niet ga terug naar login
header('Location: index.php');
exit();
}
else{
//testen of de sessie het doet?
echo $_SESSION['username'];
}
?>
Gewijzigd op 26/11/2010 10:40:21 door gerhard l
Bedankt Gerhard ik ga er mee aan de slag, ik moet we het een en ander aanpassen maar dat komt wel goed
success
Hoi Gerhard bedankt het is inmiddels gelukt om aan de hand van je schript en de aanwijzingen hierboven mijn schript zo te maken dat hij werkt en hij meent de session variable gewoon mee :) helemaal super