Fout in session
Pagina: « vorige 1 2 3 4 volgende »
kijk eens helemaal bovenaan, daar staat de hele code, er staat een else waarin een database.php wordt geinclude, niets meer niets minder, het ligt niet aan de post, er gebeurt iets wazigs met mijn SESSION aangezien hij de namen verandert of zomaar uitlogt
Je moet eens hulp accepteren want er staat een foutmelding dat je post niet gevuld is of gewoon niet bestaat.
Je moet dus even in je formulier kijken of je een input veld hebt met de naam actie.
En kijken of deze gevuld word.
Als dit het geval is kunnen we een andere oorzaak opzoeken maar dit is de meest voor de hand liggende oorzaak.
Jammer dat je geen hulp accepteert zoals je het nu zegt.
Succes.
Zet session_start() eens in het geposte bestand. Maakt dat uit?
Bovendien staat er geen 'foutmelding' maar 'notice', niks ernstigs dus. Als je alles hebt gelezen zou je het totale plaatje moeten begrijpen
Toevoeging op 09/06/2011 12:46:57:
- SanThe - op 09/06/2011 12:44:54:
Zet session_start() eens in het geposte bestand. Maakt dat uit?
Nee geen verschil
Paul Oosting op 09/06/2011 12:46:32:
Nee geen verschil
- SanThe - op 09/06/2011 12:44:54:
Zet session_start() eens in het geposte bestand. Maakt dat uit?
Nee geen verschil
Je hebt wel session_start() ook in dat andere bestand staan? Dan moet je een error krijgen. Krijg je die niet dan wordt er geen include() gedaan.
Beide session_starts waren er nog, geen verschil. Maar ik heb het gevoel dat de webserver de session verkracht. Moet ik misschien session_save_path gebruiken?
Error_reporting staat aan. Twee keer session_start(). Dat MOET een 'headers already send' error geven. Doet ie dat niet dan wordt er slechts één keer session_start() gedaan en wordt dus het bestand niet geinclude().
Je bedoelt de database.php dat die niet geinclude wordt?
Paul Oosting op 09/06/2011 11:36:26:
Ik gebruik session_destroy voor het uitloggen, hier is de code die ik tot nu heb (hij is bij lange na nog niet af)
als je hier refresht, verandert hij dus de $_SESSION naam.
Deze pagina, heet overzicht.php. In de index.php include ik deze pagina die hij uit een $_GET haalt: index.php?page=overzicht.php , de index is zeg maar de opmaak.
En in de database.php staat session_start()
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
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
<?
if ($_POST['actie']=='Opslaan'){
include "../database.php";
}
else{
include "database.php";
$filiaal=$_SESSION['filiaal'];
$sql="SELECT naam,user_id FROM medewerkers WHERE filiaal='$filiaal'";
$r=mysql_query($sql);
echo"
<table cellspacing='0'>
<tr>
<th>
Verantwoordelijke
</th>
<th>
Taken
</th>
<th>
Omschrijving
</th>
</tr>
<tr>
<td class='border-left border-bottom'>";
while ($row=mysql_fetch_array($r)){
$id=$row['user_id'];
$naam=$row['naam'];
echo "<a href='index.php?page=taken/overzicht&map=taken&id=$id'>".$naam."</a><br>";
}
echo"
</td>
</tr>
</table>
";
}
?>
if ($_POST['actie']=='Opslaan'){
include "../database.php";
}
else{
include "database.php";
$filiaal=$_SESSION['filiaal'];
$sql="SELECT naam,user_id FROM medewerkers WHERE filiaal='$filiaal'";
$r=mysql_query($sql);
echo"
<table cellspacing='0'>
<tr>
<th>
Verantwoordelijke
</th>
<th>
Taken
</th>
<th>
Omschrijving
</th>
</tr>
<tr>
<td class='border-left border-bottom'>";
while ($row=mysql_fetch_array($r)){
$id=$row['user_id'];
$naam=$row['naam'];
echo "<a href='index.php?page=taken/overzicht&map=taken&id=$id'>".$naam."</a><br>";
}
echo"
</td>
</tr>
</table>
";
}
?>
als je hier refresht, verandert hij dus de $_SESSION naam.
Deze pagina, heet overzicht.php. In de index.php include ik deze pagina die hij uit een $_GET haalt: index.php?page=overzicht.php , de index is zeg maar de opmaak.
En in de database.php staat session_start()
het kan zijn dat ik er overheen kijk, maar ik zie nergens $_SESSION['naam']. Ik zie wel een $_SESSION['filiaal'].
Zet eens ergens bovenin (na session_start):
echo '<br>**';
var_dump($_SESSION['filiaal']);
echo '**<br>';
Wat komt er dan in beeld te staan, en wat gebeurt er als je de pagina refresht?
Ozzie PHP op 09/06/2011 13:00:20:
het kan zijn dat ik er overheen kijk, maar ik zie nergens $_SESSION['naam']. Ik zie wel een $_SESSION['filiaal'].
Zet eens ergens bovenin (na session_start):
echo '<br>**';
var_dump($_SESSION['filiaal']);
echo '**<br>';
Wat komt er dan in beeld te staan, en wat gebeurt er als je de pagina refresht?
Paul Oosting op 09/06/2011 11:36:26:
Ik gebruik session_destroy voor het uitloggen, hier is de code die ik tot nu heb (hij is bij lange na nog niet af)
als je hier refresht, verandert hij dus de $_SESSION naam.
Deze pagina, heet overzicht.php. In de index.php include ik deze pagina die hij uit een $_GET haalt: index.php?page=overzicht.php , de index is zeg maar de opmaak.
En in de database.php staat session_start()
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
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
<?
if ($_POST['actie']=='Opslaan'){
include "../database.php";
}
else{
include "database.php";
$filiaal=$_SESSION['filiaal'];
$sql="SELECT naam,user_id FROM medewerkers WHERE filiaal='$filiaal'";
$r=mysql_query($sql);
echo"
<table cellspacing='0'>
<tr>
<th>
Verantwoordelijke
</th>
<th>
Taken
</th>
<th>
Omschrijving
</th>
</tr>
<tr>
<td class='border-left border-bottom'>";
while ($row=mysql_fetch_array($r)){
$id=$row['user_id'];
$naam=$row['naam'];
echo "<a href='index.php?page=taken/overzicht&map=taken&id=$id'>".$naam."</a><br>";
}
echo"
</td>
</tr>
</table>
";
}
?>
if ($_POST['actie']=='Opslaan'){
include "../database.php";
}
else{
include "database.php";
$filiaal=$_SESSION['filiaal'];
$sql="SELECT naam,user_id FROM medewerkers WHERE filiaal='$filiaal'";
$r=mysql_query($sql);
echo"
<table cellspacing='0'>
<tr>
<th>
Verantwoordelijke
</th>
<th>
Taken
</th>
<th>
Omschrijving
</th>
</tr>
<tr>
<td class='border-left border-bottom'>";
while ($row=mysql_fetch_array($r)){
$id=$row['user_id'];
$naam=$row['naam'];
echo "<a href='index.php?page=taken/overzicht&map=taken&id=$id'>".$naam."</a><br>";
}
echo"
</td>
</tr>
</table>
";
}
?>
als je hier refresht, verandert hij dus de $_SESSION naam.
Deze pagina, heet overzicht.php. In de index.php include ik deze pagina die hij uit een $_GET haalt: index.php?page=overzicht.php , de index is zeg maar de opmaak.
En in de database.php staat session_start()
het kan zijn dat ik er overheen kijk, maar ik zie nergens $_SESSION['naam']. Ik zie wel een $_SESSION['filiaal'].
Zet eens ergens bovenin (na session_start):
echo '<br>**';
var_dump($_SESSION['filiaal']);
echo '**<br>';
Wat komt er dan in beeld te staan, en wat gebeurt er als je de pagina refresht?
Die $_SESSION['naam'] staat in de index.php waar de opmaak van de website in is opgemaakt, neem van mij aan dat die hem laat zien, en verandert
en wat gebeurt er met $_SESSION['filiaal']? var_dump die eens...
**string(6) "Lemmer" **
Oke, en die verandert niet als je refresht?
Als ik hem weghaal gaat die collega ook helemaal weg, omdat ik vanuit het database de personen selecteer where filiaal=$filiaal, maar wanneer ik dan refresh gebeurt er niks raars
Gewijzigd op 09/06/2011 13:16:26 door Paul Oosting
Maar wat gebeurt er nu precies... je krijgt meerdere medewerkers in beeld en na het refreshen wijzigt de naam van een van de medewerkers?
Wat er gebeurt is, wanneer je inlogt wordt je naam uit het database gehaalt en daar wordt een $_SESSION['naam'] variabele van gemaakt.
Deze laat ik de hele tijd zien bovenaan de pagina als 'Welkom Paul Oosting' als ik zelf ben ingelogt.
Maar wanneer je refreshed verandert deze naam 'Paul Oosting' in de naam van een collega 'John Doe' (ik ga verder geen namen noemen) maar hij verandert dus die $_SESSION['naam'] op de één of andere manier terwijl daar helemaal niks van staat in het script dat hij die moet veranderen
Laat de code eens zien waar de naam uit de database wordt gehaald en waar hij in de sessie wordt gezet.
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
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
<?php
include "database.php";
$naam=$_POST['naam'];
$wachtwoord=$_POST['wachtwoord'];
$wachtwoord=md5($wachtwoord);
$sql="SELECT * FROM medewerkers WHERE user='$naam' and pass='$wachtwoord'";
$result=mysql_query($sql);
while ($row=mysql_fetch_array($result)){
$user_id=$row['user_id'];
$naam=$row['naam'];
$user=$row['user'];
$filiaal=$row['filiaal'];
$email=$row['email'];
}
$count=mysql_num_rows($result);
if ($count==1){
$_SESSION['naam']="$naam";
$_SESSION['user_id']="$user_id";
$_SESSION['user']="$user";
$_SESSION['filiaal']="$filiaal";
$_SESSION['email']="$email";
header ("location:index.php?page=modules");
}
else{
header ("location:index.php");
}
?>
include "database.php";
$naam=$_POST['naam'];
$wachtwoord=$_POST['wachtwoord'];
$wachtwoord=md5($wachtwoord);
$sql="SELECT * FROM medewerkers WHERE user='$naam' and pass='$wachtwoord'";
$result=mysql_query($sql);
while ($row=mysql_fetch_array($result)){
$user_id=$row['user_id'];
$naam=$row['naam'];
$user=$row['user'];
$filiaal=$row['filiaal'];
$email=$row['email'];
}
$count=mysql_num_rows($result);
if ($count==1){
$_SESSION['naam']="$naam";
$_SESSION['user_id']="$user_id";
$_SESSION['user']="$user";
$_SESSION['filiaal']="$filiaal";
$_SESSION['email']="$email";
header ("location:index.php?page=modules");
}
else{
header ("location:index.php");
}
?>
Haal $vars buiten quotes, denk om sql injection, bouw een goede foutafhandeling en stop alleen een id in een session. Dan kan je met een query de rest wel ophalen.
kun je de rest van die pagina (index.php) ook even laten zien?