php session?

Status
Niet open voor verdere reacties.

nilix

Gebruiker
Lid geworden
5 aug 2009
Berichten
66
Hallo,

Ik zit met ene probleempje. ik heb verschillende websites draaien op mijn server. Maar na deze een nieuwe install te geven en alles weer up to date is kwam ik erachter dat me sessies niet meer werken op de sites.

Nu ben ik er al achter dat het met php 5.3 verandert is.

Maar google veel maar kom er niet uit,

session_start();
blijft dit nu staan voor de eerst pagina en alle andere die je daar na bezoekt?

ik krijg er een fout melding mee steeds.
Wie heeft een simpel voorbeeld voor me??

groetjes
 
Voor zover ik weet werkt het nog steeds met "session_start();" -> http://php.net/session_start

Let wel dat je op elke php-pagina je de "session_start();" functie bovenaan de code plaatst of in ieder geval nog vóór je output geeft (html code en/of echo; ).
 
session_register() is *tig* jaar geleden al achterhaald dooe $_SESSION, omdat het extreem onhandig is.
Je kunt session_register() gewoon helemaal vergeten e diret $_SESSION aanspreken.
 
session_register() is *tig* jaar geleden al achterhaald dooe $_SESSION, omdat het extreem onhandig is.
Je kunt session_register() gewoon helemaal vergeten e diret $_SESSION aanspreken.

oo oke..

Maar hoe start je dan in je eerst page met de sessie?

En wat gebruik je dan in de volgende pagina's om de sessies weer aan te roepen??
Ik heb er al op gezocht met google maar kom er niet helemaal uit... snap het niet goed.( ja kom er eerlijk voor uit)
 
Het is te simpel voor woorden: Aan het begin van je pagina zet je altijd session_start(), en daarna roep je altijd $_SESSION aan voor alle data die je in de session wilt bewaren. Meer is er niet aan:

<?php
session_start();

$_SESSION['foo']='bar';
?>

<?php
session_start();
echo $_SESSION['foo'];
?>
 
En wat gebruik je dan in de volgende pagina's om de sessies weer aan te roepen?

Als je, zoals PgVincent al zei, aan het begin van je pagina (OVERAL en ELKE pagina) session_start(); zet, dan wordt alle data vanaf de eerste pagina die is bezocht opgeslagen en meegenomen in de $_SESSION variabele.
 
steun

Als je, zoals PgVincent al zei, aan het begin van je pagina (OVERAL en ELKE pagina) session_start(); zet, dan wordt alle data vanaf de eerste pagina die is bezocht opgeslagen en meegenomen in de $_SESSION variabele.


Heel erg bedankt voor jullie steun ik kom er zo wel uit denk ik.
 
toch nog niet goed

Me 1e pagina werkt goed

Maar op de 2e pagina vraag ik de sessie weer op dit werkt wel maar krijg hier weer de melding

Notice: A session had already been started - ignoring session_start() in /var/www/public/nilix/foto2/menu2.php on line 2

Ik moet hier toch weer beginnen met session_start(); ??

doe ik dit niet dat kloppen mijn variabelen weer niet deze worden dan niet mee genomen?

iemand een idee??
 
Laatst bewerkt:
Je moet session_start() 1x draaien aan het begin van elke *pagina*, niet aan het begin van elk stuk PHP code.

Wellicht is het ook beter om te spreken over pageviews. Elke URL die je op je site aanroept moet ervoor zorgen dat er één keer session_start() wordt gedraaid.

De meeste gebruikelijke manier om dit voor elkaar te krijgen is om session_start() in index.php te zetten en je webserver alle URL's te laten herschrijven naar index.php.
Vervolgens kun je in index.php weer kijken naar de URL om te zien welke overige scripts je zou moeten laden om de pageview uit te leveren.

Het belangrijkste om te onthouden is dat PHP code een script is, niet een pagina. Een HTML pagina is een naam voor alle HTML code die je te zien krijgt als je ene bepaalde URL aanroept,
maar die HTML kan worden geproduceert door dertig losse PHP scripts. Je moet dus zorgen dat die scripts zo samenwerken dat er één verantwoordelijk is voor de session en de rest daar daar dus niet over hoeft na te denken.

Zie ook: bootstrap
 
Je moet session_start() 1x draaien aan het begin van elke *pagina*, niet aan het begin van elk stuk PHP code.

Wellicht is het ook beter om te spreken over pageviews. Elke URL die je op je site aanroept moet ervoor zorgen dat er één keer session_start() wordt gedraaid.

De meeste gebruikelijke manier om dit voor elkaar te krijgen is om session_start() in index.php te zetten en je webserver alle URL's te laten herschrijven naar index.php.
Vervolgens kun je in index.php weer kijken naar de URL om te zien welke overige scripts je zou moeten laden om de pageview uit te leveren.

Het belangrijkste om te onthouden is dat PHP code een script is, niet een pagina. Een HTML pagina is een naam voor alle HTML code die je te zien krijgt als je ene bepaalde URL aanroept,
maar die HTML kan worden geproduceert door dertig losse PHP scripts. Je moet dus zorgen dat die scripts zo samenwerken dat er één verantwoordelijk is voor de session en de rest daar daar dus niet over hoeft na te denken.

Zie ook: bootstrap

Ik draai ook maar 1 keer session_start aan het begin van de page????

op mijn eerst pagina staat .
<?
session_start();
$_SESSION['idlog'] = 0;


if ($_POST['submit']=="login"){
include "log.php";
$gebrnaam ==(strtolower ( $_POST['gebruikersnaam']));
$sql = "SELECT * FROM `leden` WHERE `gebruikersnaam` = '".
enz.....



Maar na een goed login gaat deze verder naar een ander page
hier begin ik met
<?php
session_start();

$idlog =($_SESSION["idlog"]);
?>
<head> <link href=instel.css rel=stylesheet type=text/css /></head>


daar mee krijg ik de fout :
Notice: A session had already been started - ignoring session_start() i

Wat doe ik fout???
 
De foutmelding zegt glashard dat je twee jeer session_start draait, dus dat doe je.

Ik kan niet zien waar, maar de gewoonlijk zit het in ene script dat ergens wordt geladen met include() of require().;



PS:
$gebrnaam ==(strtolower ( $_POST['gebruikersnaam']));

De buitenste haakjes zijn niet nodig:

$gebrnaam == strtolower($_POST['gebruikersnaam']);


Wat wel *heel erg* nodig is is dat je de inhoud van $gebrnaam beveiligt met de escape functie van je database, anders wordt je vroeg of laat gagantisch gehackt.

zie: SQL Injectie
 
De foutmelding zegt glashard dat je twee jeer session_start draait, dus dat doe je.

Ik kan niet zien waar, maar de gewoonlijk zit het in ene script dat ergens wordt geladen met include() of require().;



PS:
$gebrnaam ==(strtolower ( $_POST['gebruikersnaam']));

De buitenste haakjes zijn niet nodig:

$gebrnaam == strtolower($_POST['gebruikersnaam']);


Wat wel *heel erg* nodig is is dat je de inhoud van $gebrnaam beveiligt met de escape functie van je database, anders wordt je vroeg of laat gagantisch gehackt.

zie: SQL Injectie


Ben gaan zoeken en ja hoor stop we zat een include functie bij en daar kwam ie weer terug.

Had inderdaad 2 keer sessie_start staan. Bedankt voor de opmerking. bij deze opgelost :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan