Verlies van de session op nieuwe pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nira Duursma

Nira Duursma

25/11/2010 20:34:14
Quote Anchor link
hallo allemaal ik heb een vraagje waar ik helemaal geen hol van snap meer

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
?>



test.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<? session_start();

echo '- '.$_SESSION['test1'].'- test login';

?>



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
 
PHP hulp

PHP hulp

25/12/2024 04:09:13
 

25/11/2010 20:36:39
 
Nira Duursma

Nira Duursma

25/11/2010 20:40:56
Quote Anchor link
ik was al bezig met het een en ander aan te passen dat het duidelijker is :)
 
Aad B

Aad B

25/11/2010 20:44:29
Quote Anchor link
Check het gebruik van quotes en double quotes: $_SESSION['test1'] en $_SESSION["test1"]; Zorg dat je php foutmeldingen te zien krijgt, met:
error_reporting(E_ALL);
ini_set('display_errors',1);
direct na startsession()
 
Nira Duursma

Nira Duursma

25/11/2010 20:53:56
Quote Anchor link
dan krijg ik de volgende meldingen:

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
 
Jordi Kroon

Jordi Kroon

25/11/2010 21:00:36
Quote Anchor link
Waar sla je de sessions op?
 
Nira Duursma

Nira Duursma

25/11/2010 21:04:51
Quote Anchor link
ik heb de php.ini niet ingesteld ik neem aan dat dat op een standaard plek gebeurd of ben ik nu erg blond?

hoe kan je dat instellen waar je dat opslaat?
 
Aad B

Aad B

25/11/2010 21:19:32
Quote Anchor link
Permission Denied
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.
 
Nira Duursma

Nira Duursma

26/11/2010 09:40:11
Quote Anchor link
ik ben er vanochtend mee aan de slag gegaan

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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">&nbsp;</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>&nbsp;</td>
    <td align="left">  </td>
  </tr>
   <tr>
    <td>&nbsp;</td>
    <td align="left"><input type="submit" value="Login" name="submit" id="input_knop_login">   </td>
  </tr>
   <tr>
     <td>&nbsp;</td>
     <td align="left">&nbsp;</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)
PHP script in nieuw venster Selecteer het PHP script
1
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 ';

?>
Gewijzigd op 26/11/2010 10:23:22 door Nira Duursma
 
Pieter van Linschoten

Pieter van Linschoten

26/11/2010 09:44:18
Quote Anchor link

[code.][/code.]


Off-topic:
Ignore werkt niet met code tags?
Gewijzigd op 26/11/2010 09:45:48 door Pieter van Linschoten
 
Jel le

Jel le

26/11/2010 09:45:59
Quote Anchor link
Die error betekend dat $_SESSION['login'] dus niet geset is.
Controleer daar dus eerst op.
 
Nira Duursma

Nira Duursma

26/11/2010 09:48:29
Quote Anchor link
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?
 
Gerhard l

gerhard l

26/11/2010 09:49:10
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if(isset($_SESSION['login'])) ?>
Gewijzigd op 26/11/2010 09:52:28 door gerhard l
 
Jel le

Jel le

26/11/2010 09:51:05
Quote Anchor link
ja bijv. Of er
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(isset($_SESSION['login']) && $_SESSION['login'] == "1") {
van maken

Toevoeging op 26/11/2010 09:55:37:

en waarom doe je trouwens dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<FORM action="<? echo 'test.php'; ?>" method="post">


Kan ook gewoon zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<FORM action="test.php" method="post">


Ik zou ook de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php tag gebruiken ipv alleen <?
Gewijzigd op 26/11/2010 09:56:40 door Jel le
 
Nira Duursma

Nira Duursma

26/11/2010 10:01:10
Quote Anchor link
@ Jel le
ik gebruik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<FORM action="<? echo 'test.php'; ?>" method="post">
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if(isset($_SESSION['login'])) ?>
..

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
 
Gerhard l

gerhard l

26/11/2010 10:39:43
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
 }

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
    
}

?>
Gewijzigd op 26/11/2010 10:40:21 door gerhard l
 
Nira Duursma

Nira Duursma

26/11/2010 10:50:15
Quote Anchor link
Bedankt Gerhard ik ga er mee aan de slag, ik moet we het een en ander aanpassen maar dat komt wel goed
 
Gerhard l

gerhard l

26/11/2010 10:52:05
Quote Anchor link
success
 
Nira Duursma

Nira Duursma

28/11/2010 07:55:54
Quote Anchor link
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.