PHP geeft halve sessies mee

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koen Hollander

Koen Hollander

30/09/2013 18:56:59
Quote Anchor link
Hoi allemaal,

Ik heb met behulp van een RBAC een mijn personeelssysteem aangestuurd, gisteren deed alles nog zoals het hoort, maar nu heb ik als ik inlog een probleem. De sessies worden niet meegegeven. (Ik gooi alle rollen in een sessie)

Wie kan mij misschien helpen of heeft dit probleem ook wel eens gehad?

Mvg,
Koen
Gewijzigd op 30/09/2013 19:01:42 door Koen Hollander
 
PHP hulp

PHP hulp

04/02/2023 17:24:13
 
- Ariën  -
Beheerder

- Ariën -

30/09/2013 20:42:27
Quote Anchor link
Even kijken in mijn glazen bol, Koen....

Edit: Hmm....mijn collega heeft hem te lang gebruikt, en nu is de batterij leeg.... :-(

Zonder gekheid op een stokje: Kom eens met relevante code aan? Ik vraag me af waarom je de levels, groepen in een sessie bewaart? Dat kan je toch direct uit de database ophalen?
Gewijzigd op 30/09/2013 20:44:07 door - Ariën -
 
Albert de Wit

Albert de Wit

30/09/2013 21:26:27
Quote Anchor link
Ik heb dit ook 1 keer meegemaakt. Na heel lang zoeken naar de fout besloot ik eens session_start() boven elke pagina te zetten. Wonder boven wonder deed alles het weer! Maar dat is wat ik heb meegemaakt. Als je geen relevante code laat zien kan ik niet zien of je precies dezelfde fout als mij maakte.
 
Koen Hollander

Koen Hollander

01/10/2013 09:33:12
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
<?php
include "global.php";
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$sql = mysqli_query($c, "SELECT username,password,id FROM personeel WHERE username='".mysqli_real_escape_string($c, $_POST['username'])."'AND password='".mysqli_real_escape_string($c, sha1($_POST['password']))."'") ;
$row = mysqli_fetch_assoc($sql);

if ($sql == TRUE) {
$_SESSION['username'] = $_POST['username'];
$_SESSION['loggedin'] = TRUE;
$_SESSION['id'] = $row['id'];
$sql2= mysqli_query($c, "SELECT * FROM rollen WHERE id='".$_SESSION['id']."'");
$row2= mysqli_fetch_assoc($sql2);
$_SESSION['add_news'] = $row2['add_news'];
$_SESSION['read_news'] = $row2['read_news'];
$_SESSION['calculate_loon'] = $row2['calculate_loon'];
$_SESSION['absense'] = $row2['absense'];
$_SESSION['precense'] = $row2['precense'];
$_SESSION['add_staff'] = $row2['add_staff'];
$_SESSION['read_staff'] = $row2['read_staff'];
$_SESSION['admin'] = $row2['admin'];
$_SESSION['pub_note'] = $row['pub_note'];

unset ($_POST);
echo '<meta http-equiv="refresh" content="0; URL=landing.php">';
}
else {
echo mysqli_error($c); //Hier straks: "Gegevens niet gevonden" van maken
} //Sluit COOKIE/REDIRECT/SQL maken af
} //sluit IF METHOD POST
?>
 
Albert de Wit

Albert de Wit

01/10/2013 09:47:50
Quote Anchor link
Wat staat er in global.php? Ik kan niet 1 2 3 zien wat daar allemaal in zit...
 
Erwin H

Erwin H

01/10/2013 09:58:10
Quote Anchor link
Koen Hollander op 01/10/2013 09:33:12:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sql
= mysqli_query($c, "SELECT username,password,id FROM personeel WHERE username='".mysqli_real_escape_string($c, $_POST['username'])."'AND password='".mysqli_real_escape_string($c, sha1($_POST['password']))."'") ;
if ($sql == TRUE) {
?>

$sql wordt nooit true, dus die hele bende wordt ook nooit in je sessie gezet.
En een gehasht password escapen? Totaal overbodig natuurlijk.
 
Albert de Wit

Albert de Wit

01/10/2013 10:01:48
Quote Anchor link
Wat Erwin zegt klopt. Ik zou

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if ($sql) {
    // hier je code
}


gebruiken.
Gewijzigd op 01/10/2013 10:19:33 door Albert de Wit
 
- SanThe -

- SanThe -

01/10/2013 10:14:01
Quote Anchor link
Nee dus ook niet maar zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ($sql !== false) {
    // hier je code
}
?>
 
Koen Hollander

Koen Hollander

01/10/2013 21:49:53
Quote Anchor link
SanThe dat helpt helaas ook niet
Global:
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
<?php
@session_start();
//sleep(10);

//VERANDER DEZE BIJ IEDERE INSTALLATIE!

$ID = 6;
////////////////////////////////////////


require ("config.php");

$q1 = mysqli_query($c, "SELECT name FROM systemen WHERE id=".$ID."") or die(mysqli_error());
$r1 = mysqli_fetch_assoc($q1);
$SYS_NAAM=$r1['name'];
?>

<html>
<head>
<title><?php echo $SYS_NAAM; ?></title>
</head>
</html>

<?php
function loggedin() {
if ($_SESSION['loggedin'] == FALSE) {
return false;
}
else {
return true;
}
}
function
rbac($opvraag) {
$sql = mysqli_query($c, "SELECT * FROM rollen WHERE id='".$_SESSION['id']."' AND '$opvraag' = 1") or die(mysqli_error());
if ($sql == TRUE) {
return true;
}
else {
return false;
}
//END if/else
}//END FUNCTION
?>

(Config geeft alleen een SQLi verbinding mee)
Gewijzigd op 01/10/2013 21:50:49 door Koen Hollander
 
Albert de Wit

Albert de Wit

01/10/2013 21:53:17
Quote Anchor link
Wow! Waarom staat er een '@' voor je session_start(); ?
 
Koen Hollander

Koen Hollander

01/10/2013 21:57:27
Quote Anchor link
Omdat ik niet wil zien dat er al een sessie draait omdat ik niet weet waar die andere vandaan komt
 
Jordi Kroon

Jordi Kroon

01/10/2013 21:58:57
Quote Anchor link
Hiermee kijk je of de sessie al gestart is. Als de sessie niet gestart is dan wordt hij gestart.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    if(session_id() == '') {
        session_start();
    }

?>
Gewijzigd op 01/10/2013 21:59:42 door Jordi Kroon
 
Albert de Wit

Albert de Wit

01/10/2013 22:17:19
Quote Anchor link
Je weet niet waar de andere vandaan komt? Je kent je eigen code niet? Ik zou dan maar eens op zoek gaan naar die andere. En een '@' is 'bad practice'. Gebruik correcte foutafhandeling.
 
Koen Hollander

Koen Hollander

03/10/2013 08:45:02
Quote Anchor link
Weet iemand hoe deze komt? Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/hrm/domains/simplehrm.nl/public_html/folkon/login.php:4) in /home/hrm/domains/simplehrm.nl/public_html/folkon/global.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/hrm/domains/simplehrm.nl/public_html/folkon/login.php:4) in /home/hrm/domains/simplehrm.nl/public_html/folkon/global.php on line 3
 
- SanThe -

- SanThe -

03/10/2013 09:04:48
Quote Anchor link
Je hebt al output vóór session_start().
Zie de vele topics hierover.
 
Erwin H

Erwin H

03/10/2013 09:49:12
Quote Anchor link
Koen Hollander op 01/10/2013 21:49:53:
SanThe dat helpt helaas ook niet
Global:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function rbac($opvraag) {
$sql = mysqli_query($c, "SELECT * FROM rollen WHERE id='".$_SESSION['id']."' AND '$opvraag' = 1") or die(mysqli_error());
if ($sql == TRUE) {
return true;
}
else {
return false;
}
//END if/else
}//END FUNCTION
?>

WTF? Lees je de opmerkingen uberhaupt wel, of is iedereen je een beetje voor Jan met de korte achternaam aan het helpen? Wat wordt er nu door Santhe en mij gezegd?

En de headers already sent fout komt hier letterlijk dagelijks voorbij, dus doe even wat moeite voor je je problemen hier dumpt aub.
 



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.