Gå til innhold

[LØST] register_globals / Session problemer


Anbefalte innlegg

Skrevet (endret)

Jeg har en side med et bestillingsskjema slik som dette:

post-5645-1179871190_thumb.jpg

 

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 av RC1
Videoannonse
Annonse
Skrevet

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

Skrevet

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

Skrevet

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.

Skrevet

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.

Skrevet

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().

Skrevet
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å.

;)

Skrevet

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?

Skrevet

Jeg lagde et lite session test skript og det fungerte helt fint men jeg får den samme feilmeldingen...

Rart :hrm:

Skrevet (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 av RC1
Skrevet (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 av RC1
Skrevet
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;

Skrevet
$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.

Skrevet

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.

:)

Skrevet

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...