Avatar billede para7 Nybegynder
02. september 2009 - 18:59 Der er 18 kommentarer og
1 løsning

Session skal overføres til anden side

Troede ikke det var så kompliceret i PHP, når det nu i ASP er så pærelet.

Jeg ønsker at overføre en mailadresse fra querystring ?email=mig@os.dk til en anden side (på tværs af flere sider), hvor jeg så kan bestemme at modtageren af mailkontakt skal være den fra querystrengen.

Jeg har læst mig til at jeg skal have det her i toppen af den fil der skal overføre:
<?php
//Mailadresse fra se/index.php overføres fra session til kontaktformen se/mail.php
session_start();
$_SESSION['email'] = $_GET['email'];

Og i toppen af modtagerfilen:
<?php
//Mailadresse fra se/index.php overføres fra session til kontaktformen se/mail.php
session_start();

echo "Session: " .$_SESSION['email'];
Og så skal jeg have en betingelse i den fil:
if($_session['email']=="mig@os.dk"){
$emailer->email_address($_session['email']);
}

Hvad er der galt?
Avatar billede showsource Seniormester
02. september 2009 - 20:12 #1
if($_SESSION['email']=="mig@os.dk"){

og

$emailer->email_address($_SESSION['email']);
Avatar billede showsource Seniormester
02. september 2009 - 20:15 #2
og så husk på at der kan være forskelle i at bruge ' eller ", b.t.w.
Avatar billede showsource Seniormester
02. september 2009 - 20:16 #3
ehh, ikke i nævnte ex. ( ' og " ), men f.eks. bruger mysql '' om strenge i en query
Avatar billede para7 Nybegynder
02. september 2009 - 21:02 #4
Tak indtil nu. Men når jeg tester på sendesiden udskrives ingen session, kun på modtagersiden. Fatter det simpelthen ikke??

<?php
//Mailadresse fra se/mail.php skal overføres via session til mailsendesiden mailsend.php:
session_start();
//$_SESSION['email'] = $_GET['email'];
$_SESSION['email'] = 999;
echo "Session: ".$_session['email'];
Avatar billede para7 Nybegynder
02. september 2009 - 21:04 #5
Jeg har brugt opslagsværket: http://dk2.php.net/function.session-start
Avatar billede showsource Seniormester
02. september 2009 - 21:15 #6
Avatar billede showsource Seniormester
02. september 2009 - 21:24 #7
Men du har garanteret "output" før session_star()
D.v.s. "tom luft" inden startende php tag.
Evt. en "utf_8 header" før første php tag

php bør du altid starte med <?php og ikke blot <?
Så er du stensikker på der IKKE opstår misforståelser mellem xml og php
Avatar billede para7 Nybegynder
02. september 2009 - 22:09 #8
Tak for ideer og linket. Jeg har nu i det mindste fundet ud af at session skal have double quotes og side 1 virker. Jeg har nu denne kodestump på første side i orden:
<?php
//Mailadresse fra se/index.php overføres fra session til kontaktformen se/mailsend.php
session_start();
//$_SESSION["email"] = "testing";
//unset($_SESSION["email"]);
echo $_SESSION["email"];

Dette er den side der kaldes: /mailsend.php/1 og includes er under kodestumpen:

<?php
//Mailadresse fra se/index.php overføres fra session til kontaktformen se/mailsend.php
session_start();
//$_SESSION["email"] = "testing";
//unset($_SESSION["email"]);
echo $_SESSION["email"];

Det er bare blank side, når man stopper den og udskriver på den.

Hvad kan der være i vejen, session overlever ikke til side2 ???
Avatar billede olebole Juniormester
02. september 2009 - 22:40 #9
<ole>

Virker det her for dig?

test.php:

<?php
session_start();
$_SESSION["blabla"] = "noget";
?>
<a href="test2.php">TEST</a>



test2.php:

<?php
session_start();
print "<pre>";
var_dump($_SESSION);
print "</pre>";
?>



/mvh
</bole>
Avatar billede para7 Nybegynder
02. september 2009 - 22:56 #10
Altså der skrives det her:

array(0) {
}
Avatar billede olebole Juniormester
02. september 2009 - 23:34 #11
Har du slået cookies til? Prøv:

test.php:

<?php
setcookie("blabla", "noget", time()+120); // Kage, der lever i 2 minutter
?>
<a href="test2.php">TEST</a>



test2.php:

<?php
print "<pre>";
var_dump($_COOKIE);
print "</pre>";
?>

Avatar billede para7 Nybegynder
03. september 2009 - 08:15 #12
OK, der kommer det her:

array(4) {
  ["__utma"]=>
  string(63) "12722418.833528778102500300.1250682559.1251729015.1251903244.19"
  ["__utmz"]=>
  string(102) "12722418.1250843999.7.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=politi site:troll-home.dk"
  ["PHPSESSID"]=>
  string(32) "d4eaa9efca517f5667d55d71a1b1e263"
  ["__utmc"]=>
  string(8) "12722418"
}
Avatar billede para7 Nybegynder
03. september 2009 - 08:24 #13
Hvis jeg slår setcookie fra på sendesiden får jeg:

array(4) {
  ["__utma"]=>
  string(63) "12722418.833528778102500300.1250682559.1251729015.1251903244.19"
  ["__utmz"]=>
  string(102) "12722418.1250843999.7.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=politi site:troll-home.dk"
  ["PHPSESSID"]=>
  string(32) "d4eaa9efca517f5667d55d71a1b1e263"
  ["__utmc"]=>
  string(8) "12722418"
}

Jeg må lige bemærke at jeg sender til sendefilen fra den svenske /de folder til roden af hoveddomænet som er dansk.

Hvis jeg laver en test.php i samme mappe og sender til den får jeg:

array(5) {
  ["PHPSESSID"]=>
  string(32) "8acd170f1373405b5acf0d21516350d4"
  ["__utmc"]=>
  string(9) "138710134"
  ["__utma"]=>
  string(64) "138710134.3744759886031872500.1251358415.1251924206.1251958433.7"
  ["__utmz"]=>
  string(70) "138710134.1251358415.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"
  ["__utmb"]=>
  string(25) "138710134.7.10.1251958433"
}
Avatar billede para7 Nybegynder
03. september 2009 - 11:37 #14
Det mu står klart at jeg kan overføre en session fra side til side, men KUN inden for sveriesfolderen /se, som har eget svensk domæne. Når jeg forsøger at linke til kontaktsendesiden nede i roden med dansk domæne, eller systemet sender til rodfilen, stadig med det svenske domæne: svensk.se/mail.php/mail/1, så overføres session ikke.

Der må da være en let løsning i PHP. Alle ideer er velkomne :)
Avatar billede para7 Nybegynder
03. september 2009 - 11:41 #15
OK, cookie må kunne gøre det i sig selv. Jeg vil prøve at lave forsøg med cookies. Men kom gerne med tips, for det er jo lidt på tværs af det normale for en newbie php'er.
Avatar billede olebole Juniormester
03. september 2009 - 12:33 #16
En session knytter sig til et bestemt domæne og kan ikke aflæses under andre. En cookie kan du til en vis grad bruge på tværs af domæner
Avatar billede para7 Nybegynder
03. september 2009 - 12:44 #17
Jeg har nu eksperimenteret med en cookie. Jeg kan overføre som ved session fra side til side på samme domæne. Men siden kalder mailsend.php i roden, og det er det danske domæne.
Der skulle så være en option på en cookie til at sætte domæne, men jeg kan ikke få det til at virke, jeg finder stadig en cookie med det svenske domæne:

setcookie("kunde3", $_GET['email'], time()+3600, "/se", danskdomæaene.dk);
Avatar billede para7 Nybegynder
03. september 2009 - 12:45 #18
Syntaksen er jo:
setcookie(name,value,expire,path,domain,secure)
Avatar billede para7 Nybegynder
03. september 2009 - 17:07 #19
Jeg fandt ud af at bruge session og overføre denne med get fra kontaktsiden. Mission completed :)
Send gerne svar for at dele point med mig. Tak for hjælp.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester