Gå til innhold

[LØST] register_globals / Session problemer


Anbefalte innlegg

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
Lenke til kommentar
Videoannonse
Annonse

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

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

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

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
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
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
Lenke til kommentar

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
Lenke til kommentar
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
$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

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

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

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