RC1 Skrevet 22. mai 2007 Rapporter Del Skrevet 22. mai 2007 (endret) Jeg har en side med et bestillingsskjema slik som dette: Problemet er at en del av php koden i "ordrebekreftelse" delen ikke fungerer på den nye serveren som kjører register_globals=Off Med register_globals=Off så fungerer ikke Session. Variabler basert på "radio buttons" fra skjemaet fungerer heller ikke. Radio buttons: <input type="radio" name="betaling" value="forskuddsbetaling" onchange="" checked> Forskuddsbetaling <input type="radio" name="betaling" value="postoppkrav" onchange=""> Postoppkrav</td> if ($betaling == $_POST["forskuddsbetaling"]) { $forskudd1 = "20";} elseif ($betaling == $_POST["postoppkrav"]) { $postoppkrav1 = "80"; } Det kommer vel kanskje av at Session ikke fungerer?? Med denne coden og register_globals=on Så fungerte det helt fint. if ($betaling == "forskuddsbetaling") { $forskudd1 = "20";} elseif ($betaling == "postoppkrav") { $postoppkrav1 = "80"; } Endret 25. mai 2007 av RC1 Lenke til kommentar
-morten Skrevet 23. mai 2007 Rapporter Del Skrevet 23. mai 2007 Tror du har misforstått litt.. if ($_POST['betaling'] == "forskuddsbetaling") { $forskudd1 = "20"; } elseif ($_POST['betaling'] == "postoppkrav") { $postoppkrav1 = "80"; } register globals gjør at $_POST['betaling'] automatisk blir til $betaling Lenke til kommentar
jokkakim Skrevet 23. mai 2007 Rapporter Del Skrevet 23. mai 2007 Med register_globals= OFF må du sette $betaling selv: PHP $betaling = $_POST['betaling'] if ($betaling == "forskuddsbetaling") { $forskudd1 = "20";} elseif ($betaling == "postoppkrav") { $postoppkrav1 = "80"; } når det gjelder session så må du bruke $_SESSION Lenke til kommentar
BlueEAGLE Skrevet 23. mai 2007 Rapporter Del Skrevet 23. mai 2007 Det er derfor register_globals er en uvane. Bruk koden under for å feilsøke problemer med variabler som forsvinner. var_dump($_POST, $_SESSION); Lenke til kommentar
Crowly Skrevet 23. mai 2007 Rapporter Del Skrevet 23. mai 2007 Husk også at du må bruke session_start(); for å få tilgang til $_SESSION variabelen. register_globals er satt standard til off av sikkerhetsårsaker, og bør forbli slik. Når den er on så kan $_COOKIE['i'], $_GET['i'], $_POST['i'] (og muligens noen andre?) bli til $i, dette kan lage problemer i scriptet hvis du ikke gjør en f.eks $i=0; før du begynner å bruke variablen, hvis ikke så kan $i få uventete verdier. Lenke til kommentar
RC1 Skrevet 23. mai 2007 Forfatter Rapporter Del Skrevet 23. mai 2007 Nå har jeg fikset opp i alle $_POST feilene Men Session fungerer ikke. Her er session koden i "ordrebekreftelse" skriptet: <?php session_start(); $_SESSION['Epost'] = $Epost; $_SESSION['body3'] = $body3; ?> Jeg har satt $_POST['Epost'] til $Epost i skriptet. $body3 er variabel som ikke kommer fra skjemaet men som er satt i skriptet. Lenke til kommentar
Ståle Skrevet 23. mai 2007 Rapporter Del Skrevet 23. mai 2007 session_start() må være på alle sidene som bruker sessionene. Prøv a lag en test session for å utelukke at det er noe gale med session_start(). Lenke til kommentar
RC1 Skrevet 23. mai 2007 Forfatter Rapporter Del Skrevet 23. mai 2007 session_start() må være på alle sidene som bruker sessionene. Prøv a lag en test session for å utelukke at det er noe gale med session_start(). 8685873[/snapback] Jeg har med session_start() på alle sidene untatt siden med bestillingsskjema. Jeg fikk det forresten til å fungere nå. På siden som skal sende mail så måtte koden se slik ut: <?php session_start(); $mailto = "[email protected]"; $subject = "Web Order"; mail($mailto, $subject, $_SESSION['body3']); mail($_SESSION['Epost'], $subject, $_SESSION['body3']); ?> Men jeg får fortsatt en feilmelding på "ordrebekreftelse" skriptet. Den forsvinner når jeg fjerner session_start() fra skriptet. Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0 Håper kanskje noen andre ferskinger kan ha nytte av mine problemer også. Lenke til kommentar
Ståle Skrevet 23. mai 2007 Rapporter Del Skrevet 23. mai 2007 Det ser ut som du har mellomrom/linjeskift for <?php og session_start() Er det rett? Isafall er det feil. Er det scriptet ordrebekreftelsesscriptet, sant? Lenke til kommentar
RC1 Skrevet 23. mai 2007 Forfatter Rapporter Del Skrevet 23. mai 2007 Jeg lagde et lite session test skript og det fungerte helt fint men jeg får den samme feilmeldingen... Rart Lenke til kommentar
RC1 Skrevet 23. mai 2007 Forfatter Rapporter Del Skrevet 23. mai 2007 (endret) Det ser ut som du har mellomrom/linjeskift for <?php og session_start()Er det rett? Isafall er det feil. Er det scriptet ordrebekreftelsesscriptet, sant? 8686402[/snapback] Ja jeg hadde linjeskift mellom <?php og session_start(). Har fjernet den men feilmeldingen er der fortsatt. Det er i ordrebekreftelse skriptet ja. Kan det være en feil i php 4.4.4 som serveren kjører? Jeg testet "test" skriptet på en web server som kjører php 5.2.0 og det er samme feilmelding der. Endret 23. mai 2007 av RC1 Lenke til kommentar
RC1 Skrevet 24. mai 2007 Forfatter Rapporter Del Skrevet 24. mai 2007 (endret) Feilen ligger i koden merket med rødt: <?php session_start(); $_SESSION['Epost'] = $Epost; $_SESSION['body3'] = $body3; ?> Når jeg fjerner de 2 linjene så forsvinner feilmeldingen. Men de kodene skal jo være riktig, eller? Endret 24. mai 2007 av RC1 Lenke til kommentar
Crowly Skrevet 25. mai 2007 Rapporter Del Skrevet 25. mai 2007 Hvor og hvordan er $Epost og $body3 deffinert ? Lenke til kommentar
RC1 Skrevet 25. mai 2007 Forfatter Rapporter Del Skrevet 25. mai 2007 Hvor og hvordan er $Epost og $body3 deffinert ? 8696886[/snapback] $Epost og $body3 er definert lenger ned i php fila (i selve hovedscriptet) $_POST['Epost'] = $Epost; $body3 består av flere linjer slik som dette: $body = "Navn: " . $_POST['Navn'] . "\n"; $body .= "Adresse: " . $_POST['Adresse'] . "\n"; $body .= "Postnr./ Sted: " . $_POST['Sted'] . "\n"; $body .= "E-post: " . $_POST['Epost'] . "\n"; $body .= "Mobil: " . $_POST['Mobil'] . "\n"; OSV..... De er igjen samlet til en variabel: $body3 = $body.$body3; Lenke til kommentar
Crowly Skrevet 25. mai 2007 Rapporter Del Skrevet 25. mai 2007 $Epost og $body3 er definert lenger ned i php fila (i selve hovedscriptet) Variablene må jo være satt/eksistere før du kan henvise til dem. Når du prøver på $_SESSION['Epost'] = $Epost; $_SESSION['body3'] = $body3; så eksisterer ikke $Epost og $body3, du kan prøve å endre til PHP <?php session_start();$Epost=''; $body3=''; $_SESSION['Epost'] = $Epost; $_SESSION['body3'] = $body3; ?> Eller så ville jeg ha flyttet $_SESSION['Epost'] = $Epost;, $_SESSION['body3'] = $body3; til etter at du har gitt variablene en verdi. Hvis dette ikke fungerer så kan det hjelpe å få sett hele scriptet, så det er litt enklere å sette seg inn i hva du gjør. Lenke til kommentar
RC1 Skrevet 25. mai 2007 Forfatter Rapporter Del Skrevet 25. mai 2007 Jeg flyttet $_SESSION['Epost'] = $Epost; $_SESSION['body3'] = $body3; ned i hovedscriptet og da ordnet det seg gitt Jeg trodde $_SESSION måtte stå i session_start(); delen av scriptet jeg..... Takk for hjelpen, tror jeg har lært litt mer. Lenke til kommentar
Crowly Skrevet 26. mai 2007 Rapporter Del Skrevet 26. mai 2007 Det er ikke noe anderledes å tilordne verdier til $_SESSION variablen enn andre variabler, bare at du må ha med session_start() på rett sted for å få tilgang til den. Her er litt mer info, fra en PHP side jeg har funnet mye nyttig info (er på engelsk): Practical PHP Programming - Cookies and sessions Practical PHP Programming - 9.3.1. Starting a session Practical PHP Programming - 9.3.2. Adding session data Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå