Toon posts:

[PHP]Session $Var

Pagina: 1
Acties:
  • 358 views

Onderwerpen


  • UniPer
  • Registratie: April 2003
  • Laatst online: 24-05 14:36
Hi,

Ik zit met het volgende:

Op mijn site heb ik een contact formulier wat mensen in kunnen vullen voor support aanvragen.
Hier is de code:

code:
1
<form name="app" method="post" action="sendform.php" onsubmit="return checkform(this);">


Dit form wordt opgevangen door sendform.php, hier worden een aantal variable gedefinieerd en het formulier uiteindelijk verstuurd.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$ip = $_POST['ip']; 
$httpref = $_POST['httpref']; 
$httpagent = $_POST['httpagent']; 
$visitorname = $_POST['visitorname']; 
$visitoraddress = $_POST['visitoraddress'];
$visitortel = $_POST['visitortel'];
$visitormail = $_POST['visitormail'];
$subject = $_POST['subject'];
$visitornotes = $_POST['visitornotes'];
$visitorrec = $_POST['visitorrec'];
$_SESSION["naam"] = "test" ;

if ( $visitorrec == on ) {
    $headers .= "Reply-To: ".$visitormail. " \r\n";
    mail ( $sendall , $subject, $message, $headers);
} else {
    $headers .= "Reply-To: ".$visitormail. "\r\n";
    $headers .= "Reply-To: ".$admin. "\r\n";
    mail( $admin , $subject, $message, $headers);
}

header("Location: support_thanks.php");


Aan het einde van bovenstaand script wordt de bezoeker doorgestuurd naar support_thanks.php,
waar ik vervolgens d.m.v. een include de variable uit bovenstaand bestand wil aanroepen om de
bezoeker te bedanken voor zijn bericht:

code:
1
2
3
4
5
6
7
    <?php 
        include 'sendform.php';
     ?> 
          <?php 
            $naam = $_SESSION["naam"] ;
            echo $naam; 
           ?>


Dit werkt opzich prima, ik krijg de waarde keurig te zien, echter wordt ik wel geconfronteerd met de volgende foutmelding:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/support_thanks.php:11) in /var/www/vhosts/sendform.php on line 115

Dit kan ik oplossen door de include weg te halen echter werkt dan ook de session var niet meer.

Kan iemand mij vertellen wat ik over het hoofd zie? |:(

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


  • jessy100
  • Registratie: November 2010
  • Nu online
omdat je sendform include wil die de mail 2 maal verzenden, alleen krijg je ze 2e keer een foutmelding omdat je de mail met de zelfde headers al vestuurd heb.

ik denk dat dat het is.

  • UniPer
  • Registratie: April 2003
  • Laatst online: 24-05 14:36
@jessy100: Dit had ik inderdaad ook al bedacht, de vraag is dan alleen hoe ik dit het beste af kan vangen.
Kan ik de waardes van de variable niet wegschrijven in een bestand en vervolgens die bestand includen?

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


  • jessy100
  • Registratie: November 2010
  • Nu online
UniPer schreef op zondag 05 augustus 2012 @ 19:36:
@jessy100: Dit had ik inderdaad ook al bedacht, de vraag is dan alleen hoe ik dit het beste af kan vangen.
Kan ik de waardes van de variable niet wegschrijven in een bestand en vervolgens die bestand includen?
waarom zou je perse een bestand willen includen? schrijf de naam bij het verzenden gewoon als weg naar de session en echo hem dan op de page waar je hem wilt hebben.

  • UniPer
  • Registratie: April 2003
  • Laatst online: 24-05 14:36
Als ik de include weg laat en vervolgens die session var oproep dan blijft deze leeg...

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


  • jessy100
  • Registratie: November 2010
  • Nu online
UniPer schreef op zondag 05 augustus 2012 @ 19:39:
Als ik de include weg laat en vervolgens die session var oproep dan blijft deze leeg...
niet als je op de send page dit neer zet: $_SESSION["naam"] = "ingevoerde naam hier";

dan word die opgeslagen in de sessie en kun je het overal oproepen.

@hieronder 8)7 daar heb ik heel niet aangedacht. natuurlijk wel de sessie starten voordat je er uberhaupt iets inzet.

[Voor 14% gewijzigd door jessy100 op 05-08-2012 19:42]


  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Voer je op beide pagina's de session_start functie uit?

  • UniPer
  • Registratie: April 2003
  • Laatst online: 24-05 14:36
jessy100 schreef op zondag 05 augustus 2012 @ 19:41:
[...]


niet als je op de send page dit neer zet: $_SESSION["naam"] = "ingevoerde naam hier";

dan word die opgeslagen in de sessie en kun je het overal oproepen.
Dat doe ik dus al in sendform.php "$_SESSION["naam"] = "test" ;"
Voer je op beide pagina's de session_start functie uit?
Hmm....momentje.. :)

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


  • UniPer
  • Registratie: April 2003
  • Laatst online: 24-05 14:36
Nu ik dit heb gedaan:
php1:
code:
1
2
3
4
<?php
        session_start();
        $_SESSION['naam'] = 'naam' ;
?>


php2:
code:
1
2
3
4
<?php 
    session_start();
    echo $_SESSION['naam'];
?>


krijg ik:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at support_thanks.php:11) in support_thanks.php on line 84

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


  • jessy100
  • Registratie: November 2010
  • Nu online
UniPer schreef op zondag 05 augustus 2012 @ 19:49:
Nu ik dit heb gedaan:
php1:
code:
1
2
3
4
<?php
        session_start();
        $_SESSION['naam'] = 'naam' ;
?>


php2:
code:
1
2
3
4
<?php 
    session_start();
    echo $_SESSION['naam'];
?>


krijg ik:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at support_thanks.php:11) in support_thanks.php on line 84
dat komt omdat je hem nogsteeds include. je mag zelf ook wel een beetje zoeken want dit word een ik post en jij fixt mijn error topic eerlijkgezegd.

  • UniPer
  • Registratie: April 2003
  • Laatst online: 24-05 14:36
dat komt omdat je hem nogsteeds include.
De include heb ik er al uitgehaald, ik gebruik dus alleen nog maar de echo van de Session var.
Ik doe niet anders dan zoeken, alleen werkt het nog niet en heb ik het gevoel dat ik iets mis en/of over het hoofd zie.

Is het dan verkeerd om hier een topic te openen?

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


  • X_lawl_X
  • Registratie: September 2009
  • Laatst online: 11:39
Mag ik je er ook op wijzen dat input validation ook handig is? Ik kan zo andere headers meegeven als ik dat zou willen. Bovendien mis je nog aanhalingstekens om 'on' in je if-statement.

  • UniPer
  • Registratie: April 2003
  • Laatst online: 24-05 14:36
X_lawl_X schreef op zondag 05 augustus 2012 @ 19:53:
Mag ik je er ook op wijzen dat input validation ook handig is? Ik kan zo andere headers meegeven als ik dat zou willen. Bovendien mis je nog aanhalingstekens om 'on' in je if-statement.
Je hebt bij beide gelijk, ga ik straks gelijk regelen. thanks! :)

Zojuist wat artikelen gelezen over session_start() en liep toen tegen het volgende aan:

"To use cookie-based sessions, session_start() must be called before outputing anything to the browser."

Dit was bij mij in één van de files niet het geval, nu dus wel en het werkt 8)

Bedankt voor de duwtjes in de juiste richting! _/-\o_

[Voor 31% gewijzigd door UniPer op 05-08-2012 20:00]

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 05-06 10:41

NMe

Quia Ego Sic Dico.

jessy100 schreef op zondag 05 augustus 2012 @ 19:51:
[...]


dat komt omdat je hem nogsteeds include. je mag zelf ook wel een beetje zoeken want dit word een ik post en jij fixt mijn error topic eerlijkgezegd.
^^ dat inderdaad. Als je in Google zoekt op "php session problem" zul je geheid bij een van de eerste hits lezen dat je session_start wel op elke pagina aan moet roepen (en natuurlijk in de manual voor sessions op PHP.net) en letterlijk die foutmelding van "headers already sent" in Google of de GoT search stoppen lost dat probleem ook voor je op. Tel daarbij op dat je Waar hoort mijn topic? niet gelezen hebt ondanks dat je daar eerder al eens op gewezen bent en dan blijft er ineens weinig gezonde voedingsbodem meer over voor dit topic. Volgende keer stellen we het op prijs als je in elk geval zelf even iets meer moeite steekt in het vinden van een oplossing voor je je vraag stelt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee