Zegt dat er geen session is

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

P-ter AA

P-ter AA

13/06/2010 14:05:30
Quote Anchor link
Hallo,

Ik heb het volgende probleem:

Ik heb een login gemaakt die als je de juiste wachtwoorden hebt ingevuld een session id aanmaakt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
// Connects to your Database
include ("../Connections/Connect.php"); //Verbinding
mysql_connect("$hostname","$username","$password") or die(mysql_error());
mysql_select_db("$database") or die(mysql_error());

$check = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '".mysql_real_escape_string($_POST["User"])."'"
)or die(mysql_error());
$rowcheck = mysql_fetch_assoc($check);

if($_POST['Pass'] == $rowcheck['wachtwoord']){
    
//als het wachtwoord goed is, zoals sessios opslaan
$_SESSION['id'] = $rowcheck['id'];


Als je het goed hebt ingevuld moet je op een ink klikken om verder te gaan (gaat dan naar een andere pagina in dezelfde map)

Vervolgens staat daar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php session_start();
If (!isset($_SESSION['id'])){
?>


En dan de HTML pagina, dan weer
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php }else{ ?>
dan de pagina voor ingelogde mensen en dan weer
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php } ?>


Op mijn localhost werkt het perfect maar zodra ik hem online zet doet hij het niet meer. Hij laat elkekeer de pagina zien voor gasten, terwijl hij wel zegt dat de wachtwoorden goed zijn en ik dus op de link kan klikken. (De link gaat naar de pagina waar hij zich al in bevind. ( index.php# )

(De login staat trouwens in een inlineframe)

Kan iemand helpen? Alvast bedankt!
 
PHP hulp

PHP hulp

23/04/2024 19:29:44
 
Sander de Vos

Sander de Vos

13/06/2010 14:08:40
Quote Anchor link
Edit:
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
<?php
// Login
if (isset($_POST['password'])) {
    $gebruikersnaam = mysql_real_escape_string($_POST['user']);
    $wachtwoord = md5($_POST['password']);
    
    $query = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '" . $gebruikersnaam . "' AND wachtwoord = '" . $wachtwoord . "'");
    $count = mysql_num_rows($query);
        
    if ($count == "1") {
        $_SESSION['gebruikersnaam '] = ($gebruikersnaam);
        header('Refresh: 0; url=');
    }
else {
        // hier je error
    }
}

?>
Gewijzigd op 13/06/2010 14:56:28 door Sander de Vos
 
Sander de Vos

Sander de Vos

13/06/2010 14:13:13
Quote Anchor link
-Knip-
Gewijzigd op 13/06/2010 14:13:33 door Sander de Vos
 
Noppes Homeland

Noppes Homeland

13/06/2010 14:14:22
Quote Anchor link
Uiteraard gebruik je geen session_register!!

het is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
session_start();
$_SESSION['gebruikersnaam'] = 'pietje';

// opvragen
if (isset($_SESSION['gebruikersnaam'])) {
   echo $_SESSION['gebruikersnaam'];
}

?>


Sander de Vos, het is niet de bedoeling posts aan te passen, op een zodanige manier dat hetgeen toegeoveogde waarde meer heeft voor het topic.

Pas je post weer aan naar het geen er stond, en zet er een opmerking bij dat je naast het paaltje hebt staan plassen.
Gewijzigd op 13/06/2010 14:18:23 door Noppes Homeland
 
P-ter AA

P-ter AA

13/06/2010 14:17:25
Quote Anchor link
Noppes Homeland op 13/06/2010 14:14:22:
Uiteraard gebruik je geen session_register!!

het is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
session_start();
$_SESSION['gebruikersnaam'] = 'pietje';

// opvragen
if (isset($_SESSION['gebruikersnaam'])) {
   echo $_SESSION['gebruikersnaam'];
}

?>






Maar dit is toch precies wat ik heb?
En op mijn localhost doet hij het wel.. En inderdaad, aan register heb ik niks want ik moet hem ook kunnen weergeven.
Gewijzigd op 13/06/2010 14:19:02 door P-ter AA
 
Jesper Diovo

Jesper Diovo

13/06/2010 14:18:46
Quote Anchor link
@Sander de Vos: je moet geen session_register() gebruiken. Dat is ouderwets. Je kunt een $_SESSION aanmaken door er simpelweg een waarde aan toe te kennen. Het element in de $_SESSION-array wordt dan automatisch aangemaakt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
session_start();
$_SESSION['naam'] = 'Naam';
?>

Zoals Noppes hierboven al aangeeft. Jouw code moet je dus nog een beetje omvormen:

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
// Login
if (isset($_POST['password'])) {
    $gebruikersnaam = mysql_real_escape_string($_POST['user']);
    $wachtwoord = md5($_POST['password']);
    
    $query = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '" . $gebruikersnaam . "' AND wachtwoord = '" . $wachtwoord . "'");
        
    if (mysql_num_rows($query) == 1) {
        $_SESSION['naam'] = $_POST['user'];
    }
else {
        // hier je error
    }
}

?>
 
Jesper Diovo

Jesper Diovo

13/06/2010 14:20:28
Quote Anchor link
Maurice van Breukelen op 13/06/2010 14:17:25:
Maar dit is toch precies wat ik heb?
En op mijn localhost doet hij het wel.. En inderdaad, aan register heb ik niks want ik moet hem ook kunnen weergeven.


Register doet in principe hetzelfde, hoor. Dus wat dat weergeven betreft hoef je je daarover niet druk te maken. Het gaat alleen er om dat register gewoon verouderd is. Deze manier is sneller.

Overigens zie ik in jouw script in het starttopic nergens een session_start() staan? Kan aan mij liggen?
 
P-ter AA

P-ter AA

13/06/2010 14:21:02
Quote Anchor link
Ik zal de hele code even plaatsen:

login_check.php
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();
$User = htmlspecialchars($_POST['User']);
$Wacht = htmlspecialchars($_POST['Pass']);
//als het username niet ingevuld is
if (!$User) {
echo "<font color=\"white\" face=\"calibri\" size=\"2\"><br /><br />Vul een uw gebruikersnaam in. <br />Klik <a href=\"javascript: history.go(-1)\">hier</a> om terug te gaan</font>";
exit; }
//als het wachtwoord niet ingevuld is
if (!$Wacht) {
echo "<font color=\"white\" face=\"calibri\" size=\"2\"><br /><br />Vul een uw wachtwoord in. <br />Klik <a href=\"javascript: history.go(-1)\">hier</a> om terug te gaan</font>";
exit; }
    
// Connects to your Database
include ("../Connections/Connect.php"); //Verbinding
mysql_connect("$hostname","$username","$password") or die(mysql_error());
mysql_select_db("$database") or die(mysql_error());

$check = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '".mysql_real_escape_string($_POST["User"])."'"
)or die(mysql_error());
$rowcheck = mysql_fetch_assoc($check);

if($_POST['Pass'] == $rowcheck['wachtwoord']){
    
//als het wachtwoord goed is, zoals sessios opslaan
$_SESSION['id'] = $rowcheck['id'];
$_SESSION['gebruikersnaam'] = $rowcheck['gebruikersnaam'];
$_SESSION['voornaam'] = $rowcheck['voornaam'];
$_SESSION['achternaam'] = $rowcheck['achternaam'];
$_SESSION['email'] = $rowcheck['email'];

echo "<font color=\"white\" face=\"calibri\" size=\"2\"><br /><br />U bent succesvol ingelogd! Klik <a href=\"../index.php#\" target=\"_top\">hier</a> om verder te gaan</font>";
}
else{

//als het wachtwoord fout is
echo "<font color=\"white\" face=\"calibri\" size=\"2\"><br /><br />Combinatie van gebruikersnaam en wachtwoord is onjuist!<br />Klik <a href=\"javascript: history.go(-1)\">hier</a> om terug te gaan</font>";
}


?>


En op index.php staat ook de session start:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php session_start();
If (!isset($_SESSION['id'])){
?>
Gewijzigd op 13/06/2010 14:24:48 door P-ter AA
 
Noppes Homeland

Noppes Homeland

13/06/2010 14:22:26
Quote Anchor link
Blijkbaar niet, anders had je dit probleem niet gehad.

Volgens mij vergeet je simpelweg de sessie te starten op de pagina waar jij het id probeert toe te kennen aan de $_SESSION
 
P-ter AA

P-ter AA

13/06/2010 14:27:41
Quote Anchor link
Noppes Homeland op 13/06/2010 14:22:26:
Blijkbaar niet, anders had je dit probleem niet gehad.

Volgens mij vergeet je simpelweg de sessie te starten op de pagina waar jij het id probeert toe te kennen aan de $_SESSION


Heb de vorige post even gewijzigd en zoals je ziet staat er wel degelijk een session start.. Als deze er niet had gestaan werkte hij op de localhost ook niet..
 
Jesper Diovo

Jesper Diovo

13/06/2010 14:27:52
Quote Anchor link
Ik zie allerlei overbodigheden in je code, Maurice. Bovendien oogt het maar als een rotzooitje, vind je zelf ook niet? Zal even toelichten wat ik bedoel.

- Je gebruikt heel veel backspaces. Wat als je nu eens je echo opent met een enkele quote ('), dan kun je in je HTML netjes dubbele quotes (") hanteren;
- Exit is nergens voor nodig. Zet alles netjes in een if-else-constructie;
- Variabelen altijd buiten quotes. Dus bij je databaseconnectie hoef je geen quotes te hanteren;
- Gebruik géén 'or die()' in je code. Dat maakt je website er niet mooier op. Je doodt immers geen pagina's. Controleer de resultaten van je query met een nette if-constructie.

Heb je op alle pagina's waar je $_SESSION gebruikt session_start() bovenaan de pagina staan?
 
P-ter AA

P-ter AA

13/06/2010 14:33:16
Quote Anchor link
Jezpur de Ruyter op 13/06/2010 14:27:52:
Ik zie allerlei overbodigheden in je code, Maurice. Bovendien oogt het maar als een rotzooitje, vind je zelf ook niet? Zal even toelichten wat ik bedoel.

- Je gebruikt heel veel backspaces. Wat als je nu eens je echo opent met een enkele quote ('), dan kun je in je HTML netjes dubbele quotes (") hanteren;
- Exit is nergens voor nodig. Zet alles netjes in een if-else-constructie;
- Variabelen altijd buiten quotes. Dus bij je databaseconnectie hoef je geen quotes te hanteren;
- Gebruik géén 'or die()' in je code. Dat maakt je website er niet mooier op. Je doodt immers geen pagina's. Controleer de resultaten van je query met een nette if-constructie.

Heb je op alle pagina's waar je $_SESSION gebruikt session_start() bovenaan de pagina staan?


Je hebt gelijk, ik ben al heel lang met dit project bezig, en toen ik er aan begon kon ik er eigenlijk nog niks van.. Dus hier moet ik nog naar kijken.. Maar qua codes zitten er geen fouten in. Maar bedankt! Ik zal deze punten in de gaten houden!

En ja, ik heb op iedere pagina session_start staan..

Blijf het raar vinden dat hij het niet doet.

In ieder geval bedankt dat jullie me willen helpen!

Oja, mischien hebben jullie er wat aan:
Link: http://mbdesigner.nl/Fairmania
Gebruikersnaam: Test
Wachtwoord: 12345
Dan kunnen jullie het zelf eens bekijken..
Gewijzigd op 13/06/2010 14:37:54 door P-ter AA
 
Jesper Diovo

Jesper Diovo

13/06/2010 14:34:35
Quote Anchor link
Zet de volgende code ook eens helemaal bovenaan je inlog-bestand en index.php.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
// rest van je code
?>
 
P-ter AA

P-ter AA

13/06/2010 14:42:45
Quote Anchor link
Jezpur de Ruyter op 13/06/2010 14:34:35:
Zet de volgende code ook eens helemaal bovenaan je inlog-bestand en index.php.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
// rest van je code
?>

geeft op index.php (2 regels)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/index.php:45) in /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/index.php on line 45


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/index.php:45) in /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/index.php on line 45


En op login (2 regels):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/Login/login_check.php:31) in /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/Login/login_check.php on line 31


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/Login/login_check.php:31) in /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/Login/login_check.php on line 31


Maar dit komt natuurlijk omdat hij niet begint met session_start(); tog? Moet ik er niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
// rest van je code
?>


van maken?

Edit: Heb het even gedaan, en dan geeft hij geen meldingen.. Dus er zitten geen fouten in..

Edit2: Het is opgelost! Het probleem zat hem in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "<font color=\"white\" face=\"calibri\" size=\"2\"><br /><br />U bent succesvol ingelogd! Klik <a href=\"../index.php#\" target=\"_top\">hier</a> om verder te gaan</font>";


"../index.php# moest zijn "../index.php Dus zonder #

Iedereen bedankt voor de moeite! Echt super dat ik zo snel reacties kreeg!
Gewijzigd op 13/06/2010 14:59:36 door P-ter AA
 
Sander de Vos

Sander de Vos

13/06/2010 15:01:08
Quote Anchor link
@Noppes Homeland

Het is ook niet de bedoeling mensen die degene met het probleem proberen te helpen, af te kraken. Leuk voor jou misschien, maar hier wordt ook niemand beter door. Ik snap dat een andere oplossing beter is en kan zijn, en begrijp ook dat die dan gepost wordt. Maar om dan meteen iemand af te kraken...

@Hierboven
Geen dank ;)
Gewijzigd op 13/06/2010 15:07:41 door Sander de Vos
 
- SanThe -

- SanThe -

13/06/2010 15:07:01
Quote Anchor link
Maurice van Breukelen op 13/06/2010 14:42:45:
Maar dit komt natuurlijk omdat hij niet begint met session_start(); tog? Moet ik er niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
// rest van je code
?>


van maken?

Edit: Heb het even gedaan, en dan geeft hij geen meldingen.. Dus er zitten geen fouten in..


Onzin. Je gaat nu pas fouten melden na de start van de sessie, die dus niet lukt.

Dit voldoet prima:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
session_start();

// rest van je code
?>


Verder mag er geen enkele output naar de browser zijn vóór de session_start().
Gewijzigd op 13/06/2010 15:10:40 door - SanThe -
 
P-ter AA

P-ter AA

14/06/2010 16:42:47
Quote Anchor link
Ik dacht dat het probleem opgelost was, maar dit is blijkbaar niet.. Hij doet weer hetzelfde..

Wat opvallend is:
Als ik de hierboven genoemde code plaats, doet hij het wel, ondanks deze error:

Notice: A session had already been started - ignoring session_start() in /customers/mbdesigner.nl/mbdesigner.nl/httpd.www/Fairmania/index.php on line 47

En als ik de code van SanThe Nvt niet zegt hij weer elkekeer dat ik niet ben ingelogd.. Hoe kan dit?
 
Joren de Wit

Joren de Wit

14/06/2010 16:56:36
Quote Anchor link
In je index.php op regel 47 roep je voor de tweede keer session_start() aan. Hoewel dat geen fatale fout is en je script dus gewoon doorloopt, krijg je er wel een notice op. In een script hoor je maar 1x session_start() aan te roepen. Let daarbij ook op includes die je mogelijk doet, dat levert een probleem als daar ook nog eens session_start() in staat...
 
P-ter AA

P-ter AA

14/06/2010 17:32:58
Quote Anchor link
Blanche PHP op 14/06/2010 16:56:36:
In je index.php op regel 47 roep je voor de tweede keer session_start() aan. Hoewel dat geen fatale fout is en je script dus gewoon doorloopt, krijg je er wel een notice op. In een script hoor je maar 1x session_start() aan te roepen. Let daarbij ook op includes die je mogelijk doet, dat levert een probleem als daar ook nog eens session_start() in staat...


Klopt! Dit is het! Heeeeel erg bedankt! Het werkt nu helemaal! Nogmaals bedankt!
 



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.