/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Variabelværdierne der blev
Fra : Jacob Bunk Nielsen


Dato : 02-05-01 14:38

Hej

Jeg har (sammen med mine kolleger :) lavet et system i PHP.
I en enkelt version har vi dog en detalje der driller.

Jeg poster nogle variable fra en form. Det går tilsyneladende
godt, og man kan skrive værdierne ud. Senere i det script man
poster til sender jeg dog en:

header("Location: $url");

Når denne linie står i scriptet (den står i virkeligheden i en
fil jeg includer, og som virker fint mange andre steder), så
forsvinder de værdier jeg har postet.

Hvis jeg udskriver værdierne jeg poster kan man selvfølgelig
ikke sende en header senere, og det svarer jo stort set til at
putte en:

exit;

ind før min header()-kommando. Og så går det godt ...

Så for lige at opsummere, så forsvinder nogle variable når jeg
sender en Location-header senere i scriptet. Jeg er lidt lost
mht. hvad problemet kan være?

Jeg har desværre ikke kunnet genskabe fejlen i et andet script,
så det må være et eller andet sted i min kode, men er der nogen
der har en god idé?

Jeg får ingen parse-errors eller lignende fejl fra PHP, det
kører tilsyneladende fint ...

Det er testet på både PHP 4.0.4pl1 og 4.0.5.

--
Jacob

 
 
Morten Winther (02-05-2001)
Kommentar
Fra : Morten Winther


Dato : 02-05-01 14:47


"Jacob Bunk Nielsen" <jacob@ntvcom.dk> wrote in message
news:u4rv3kh29.fsf@ntvcom.dk...
> Hej
>
> Jeg har (sammen med mine kolleger :) lavet et system i PHP.
> I en enkelt version har vi dog en detalje der driller.
>
> Jeg poster nogle variable fra en form. Det går tilsyneladende
> godt, og man kan skrive værdierne ud. Senere i det script man
> poster til sender jeg dog en:
>
> header("Location: $url");
>

Indeholder $url alle de variabelværdier du vi overføre?

Altså:

$url = 'http://www.lala.dk/fil.php4?var1=boo&var2=foo';

/ morten




Jacob Bunk Nielsen (02-05-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 02-05-01 17:49

"Morten Winther" <mw@get2net.dk> writes:

> > header("Location: $url");
>
> Indeholder $url alle de variabelværdier du vi overføre?

Ja!
Selv om det sådan set ikke er væsentligt, da det ikke er der det går galt.

Du har tydeligvis misforstået det (det er vist også svært at forklare kort),
så jeg prøver lige at beskrive problemet igen i en simpel udgave.

Jeg har en side, lad os kalde den 1.php, hvorfra jeg poster nogle værdier
fra en form:

<form method="post" action="2.php">
[ ... en masse <select> osv ... ]
</form>

Dernæst har jeg en side der hedder 2.php, som sidst i scriptet indeholder:

header("Location: 3.php");

I 2.php er der noget check på korrekt udfyldte formularer i 1.php samt
noget kode der putter nogle ting ned i databasen. Går alt godt ryger man
så til 3.php (går det skidt ryger man tilbage til 1.php med besked om at
udfylde de manglende felter).

Problemet er nu at de værdier der postes fra 1.php ikke er tilgængelige
i 2.php, hvis ovenstående header sendes. Hvis jeg derimod bare udskriver
dem (så kan man jo ikke sende en header bagefter) har de fint en værdi.
Hvis jeg laver en:

exit;

lige inde jeg sender ovenstående header går det også godt, og de postede
variable har en værdi.

Der er altså ikke noget med variable der overføres i en URL.

Jeg forstår ikke hvordan en kodelinie længere fremme i scriptet kan
have indvirkning på en variabel tidligere i scriptet

Det spøjse er at vi har flere versioner, hvor det virker fint, og så
lige denne ene, hvor det opfører sig meget mærkeligt ...

--
Jacob
But I can't upgrade my kernel, I've got some mad uptime!

Jacob Bunk Nielsen (04-05-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 04-05-01 22:37

Jacob Bunk Nielsen <spam@bunk.cc> writes:

Jeg håber ikke der er nogen der har noget imod at jeg lige snakker lidt
med mig selv ...

> <form method="post" action="2.php">
> [ ... en masse <select> osv ... ]
> </form>

.... og så kan man jo tænke sig til hvad der sker når der sidst i 2.php
står:

header("Location: 2.php");

(OK, det er ikke helt så simpelt, men det er essensen af det ...)
Så vil der i første omgang være nogle variable til rådighed, som er blevet
postet fra formen, men i andet gennemløb vil de selvfølgelig være væk.

Så 2.php blev altså parset to gange, hvilket desværre tog mig alt for lang
tid at finde ud af ...

Det fører mig så til mit næste spørgsmål:

Hvad findes der egentlig af debug-værktøjer til PHP? Havde jeg nu skrevet
et C-program havde jeg kigget det igennem med DDD (en grafisk frontend til
gdb, som er en debugger, hvor man kan 'steppe' sig igennem), men findes
der noget der ligner til PHP?

.... eller skal jeg til at skrive CGI-ting i C i stedet (det bliver nok
ikke aktuelt, det skulle da lige være af performance-hensyn :)

--
Jacob
Connection reset by little mexican guy with cable cutters.

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste