[PHP] session probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het volgende probleem:

Ik heb een pagina met een button. wanneer ik op die button klik komt er een popup te voorschijn (popup.php). Nu wil ik gegevens van de originele pagina doorgeven aan de popup.

Ik dacht dit is te doen via sessions.

Zie onderstaande code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?PHP 
if(isset($_POST['update'])) { 
$uitkomst = "";
$regel = "";

foreach($_POST as $id) { // Haalt waardes uit de aangevinkte checkboxen 

$uitkomst .= $id;

} 

$regel = substr($uitkomst, 0 , -6); // Dit doe ik omdat er anders de $_POST naam van de button mee komt
$_SESSION['berichtid'] = $regel; // Session registreren
}
 
?>


Als ik dit uitvoer, komt de popup te voorschijn, maar ik krijg de foutmelding:

Notice: Undefined index: berichtid in C:\Users\Sander\Desktop\UsbWebserver\Root\popup.php on line 5

Als ik echter de pagina ververs, komt hij wel prima te voorschijn met de juiste gegevens.


Op de pagina popup.php haal ik de variabele op via:

code:
1
2
$sql = "SELECT * FROM gewerkt WHERE berichtid='$_SESSION[berichtid]'";
      $query = mysql_query($sql) or die(mysql_error());



Ikzelf denk dat de session blijft hangen in het geheugen, maar ik weet niet hoe ik dit op kan lossen.
Ik heb al geprobrobeerd met unset($_SESSION[berichtid]); maar ook tevergeefs

Acties:
  • 0 Henk 'm!

  • Mathijs1
  • Registratie: Oktober 2002
  • Niet online
probeer het eens met session_start(); (tenzij session.auto_start op 1 staat in je configuratie)

Lees anders even hier hoe het werkt: http://www.htmlgoodies.com/beyond/php/article.php/3472581

[ Voor 16% gewijzigd door Mathijs1 op 29-03-2008 17:24 ]


Acties:
  • 0 Henk 'm!

  • EnnaN
  • Registratie: September 2002
  • Laatst online: 12-09 11:42

EnnaN

Toys in the attic

sig


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Ik denk dat de POST pas wordt geprocessed als je popup al wordt geopend. Dus het setten van de _SESSION var gebeurt te laat.

Je kan met Javascript trouwens ook direct variabelen of complete HTML aan je popup meegeven. Of je opent de popup met een aantal _REQUEST variabelen.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mathijs1 schreef op zaterdag 29 maart 2008 @ 17:23:
probeer het eens met session_start();

Lees anders even hier hoe het werkt: http://www.htmlgoodies.com/beyond/php/article.php/3472581
Dit heb ik, door middel van een geinclude bestand:

code:
1
include "check.php";


nogmaals, als ik de popup open krijg ik een foutmelding, als ik hem ververs (f5) krijg ik wel de gegevens te zien

Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Verwijderd schreef op zaterdag 29 maart 2008 @ 17:25:
[...]
...

nogmaals, als ik de popup open krijg ik een foutmelding, als ik hem ververs (f5) krijg ik wel de gegevens te zien
Dat wijst erop dus dat de eerste keer dat de popup opent, de POST en dus _SESSION nog niet zijn verwerkt/geset. 2e keer wel omdat blijkbaar dan op je hoofdpagina de POST is afgewerkt.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mocean schreef op zaterdag 29 maart 2008 @ 17:24:
Ik denk dat de POST pas wordt geprocessed als je popup al wordt geopend. Dus het setten van de _SESSION var gebeurt te laat.

Je kan met Javascript trouwens ook direct variabelen of complete HTML aan je popup meegeven. Of je opent de popup met een aantal _REQUEST variabelen.
hoe kan ik er voor zorgen dat de popup later dan de code wordt uitgevoerd dan? een timeout er op zetten van 2miliseconde?

Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Verwijderd schreef op zaterdag 29 maart 2008 @ 17:28:
[...]
hoe kan ik er voor zorgen dat de popup later dan de code wordt uitgevoerd dan? een timeout er op zetten van 2miliseconde?
Anders oplossen.

Of na de POST met JS op die pagina je popup openen, of via _REQUEST vars alle info gelijk aan je popup meegeven.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oke heb het opgelost:

bedankt iedereen!

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?PHP 
$uitkomst = "";
$regel = "";
if(isset($_POST['update'])) { 


foreach($_POST as $id) { // This will loop through the checked checkboxes 

$uitkomst .= $id;

} 

$regel = substr($uitkomst, 0 , -6);
$_SESSION['berichtid'] = $regel;

echo "<SCRIPT LANGUAGE=\"JavaScript\">\n";
echo "window.location=\"aanpassen.php\"\n";
echo "</script>";

}?>

[ Voor 141% gewijzigd door Verwijderd op 29-03-2008 19:48 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

En als ik nou javascript heb uitstaan? Kijk naar header() voor redirects, niet naar javascript.

Overigens had je je originele probleem op kunnen lossen door een isset($_SESSION['berichtid']). Maarja, de taal leren voordat je allerlei brakke meuk gaat bouwen komt tegenwoordig nog maar zelden voor jammer genoeg.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MueR schreef op zondag 30 maart 2008 @ 03:05:
En als ik nou javascript heb uitstaan? Kijk naar header() voor redirects, niet naar javascript.

Overigens had je je originele probleem op kunnen lossen door een isset($_SESSION['berichtid']). Maarja, de taal leren voordat je allerlei brakke meuk gaat bouwen komt tegenwoordig nog maar zelden voor jammer genoeg.
Inderdaad MueR, je hebt gelijk. Niet iedereen heeft javascript aan staan!

Soms is de oplossing zo gemakkelijk ... ik heb het nu via header gedaan:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?PHP  
$uitkomst = ""; 
$regel = ""; 
if(isset($_POST['update'])) {  


foreach($_POST as $id) { // This will loop through the checked checkboxes  

$uitkomst .= $id; 

}  

$regel = substr($uitkomst, 0 , -6); 
$_SESSION['berichtid'] = $regel; 

header("Location: aanpassen.php");

}?>

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
MueR schreef op zondag 30 maart 2008 @ 03:05:
Overigens had je je originele probleem op kunnen lossen door een isset($_SESSION['berichtid']). Maarja, de taal leren voordat je allerlei brakke meuk gaat bouwen komt tegenwoordig nog maar zelden voor jammer genoeg.
Juist. Alle gegeven code ontbeert input validatie, $_POST wordt op een stomme manier uitgelezen, dat gedoe met substr() is een smerige pleister om dat te corrigeren en ten slotte is er een sql injection.

{signature}


Acties:
  • 0 Henk 'm!

  • flowerp
  • Registratie: September 2003
  • Laatst online: 11-09 18:20
Voutloos schreef op zondag 30 maart 2008 @ 13:55:
[...]
Juist. Alle gegeven code ontbeert input validatie, $_POST wordt op een stomme manier uitgelezen, dat gedoe met substr() is een smerige pleister om dat te corrigeren en ten slotte is er een sql injection.
Inderdaad, dat viel me ook al op. Lichtelijk offtopic maar dit is nu precies de reden waarom PHP (soms onterecht) zo'n slechte naam heeft in het professionele circuit. Er wordt gedacht dat het zo makkelijk is dat je er niets voor hoeft te leren. Patronen die eigenlijk nog niet eens rocket-science zijn zoals (nette) conversie -> validatie -> aanroepen (nette) logic -> renderen worden totaal niet begrepen en feitelijk doet men maar wat.

We hebben allemaal eens moeten leren maar de mate waarin PHP code zoals TS dat produceert in productie genomen wordt is werkelijk alarmerend en niet echt goed voor ons vakgebied.

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.

Pagina: 1