/ 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
Gentagelse af variabler i URL
Fra : Christian Flintrup


Dato : 24-06-01 19:25

Hej,

Efter at have gennemkigget gruppens 3 sidste uger stiller jeg følgende
spørgsmål

Jeg har et loginsystem hvor folk kan logge ind. :)
Ofte, hvis der allerede er nogle variabler/parametre i URL'en, kommer
der "dubletter" hvis man skriver noget i en form igen

fx kan en url se sådan ud:

http://agge.mam/nej/det.php?er=ikkemam&test=prut?er=gummistøvle

altså 2 x "er" i samme URL-felt - og den begynder med et nyt "?".

Hvis ingen har noget imod det, kan jeg da godt smide et link til
systemet her - men anses det for reklame?

--
Christian

 
 
Jonas Delfs (24-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-06-01 19:30

"Christian Flintrup" <junk@osxhacks.com> skrev i en meddelelse
news:1eviwjt.1beps0k18a94a4N%junk@osxhacks.com...

[snip en masse]

> Hvis ingen har noget imod det, kan jeg da godt smide et link til
> systemet her - men anses det for reklame?

Nej, og det er den eneste mulighed vi har for at finde fejlen.

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Christian Joergensen (24-06-2001)
Kommentar
Fra : Christian Joergensen


Dato : 24-06-01 19:36

Christian Flintrup <junk@osxhacks.com> wrote:

> Efter at have gennemkigget gruppens 3 sidste uger stiller jeg følgende
> spørgsmål

Øhm.. hvilket spørgsmål ?

> http://agge.mam/nej/det.php?er=ikkemam&test=prut?er=gummistøvle
>
> altså 2 x "er" i samme URL-felt - og den begynder med et nyt "?".

Så vil $er være "gummistøvle"

> Hvis ingen har noget imod det, kan jeg da godt smide et link til
> systemet her - men anses det for reklame?

Prøv det - og så forklar lige dit spørgsmål igen.

--
Christian Jørgensen | "Ford, you're turning into a penguin"
http://www.razor.dk | "Stop it"

Jonas Delfs (24-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-06-01 19:47

"Christian Joergensen" <mail@phpguru.dk> skrev i en meddelelse
news:1552384.6Veaoefvbu@flaf...

> > http://agge.mam/nej/det.php?er=ikkemam&test=prut?er=gummistøvle
> >
> > altså 2 x "er" i samme URL-felt - og den begynder med et nyt "?".
>
> Så vil $er være "gummistøvle"

Ikke nødvendigvis.

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Stefan Bruhn (24-06-2001)
Kommentar
Fra : Stefan Bruhn


Dato : 24-06-01 19:47

On Sun, 24 Jun 2001 20:46:30 +0200, "Jonas Delfs"
<jonas@nospam.delfs.dk> wrote:

>Ikke nødvendigvis.

Så vil $HTTP_GET_VARS["er"] være "gummistøvle"

Mere korrekt, eller var det noget andet du vil sige?

Mvh. / Regards Stefan Bruhn
--
<?$email = unserialize("a:15:{i:0;i:115;i:1;i:116;i:2;i:101;i:3;i:102
;i:4;i:97;i:5;i:110;i:6;i:64;i:7;i:98;i:8;i:114;i:9;i:117;i:10;i:104
;i:11;i:110;i:12;i:46;i:13;i:116;i:14;i:111;}");
for ($i=0;$i<=15;$i++) {echo chr($email[$i]);}?>

Jonas Delfs (24-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-06-01 19:55

"Stefan Bruhn" <news003@3x7.dk> skrev i en meddelelse
news:ibdcjtcf15rod2n0s5khub5prev5uebsbs@ghashul.dk...

> >Ikke nødvendigvis.
>
> Så vil $HTTP_GET_VARS["er"] være "gummistøvle"
>
> Mere korrekt, eller var det noget andet du vil sige?

Ja, hvis det er PHP4, så er det mere korrekt. Med PHP3 er det jo heller ikke
sikkert at det vil virke, kommer an på track_vars.
.... man tager bare forgivet at $er indeholder det "er" er sat til i
query-strengen.

EOD

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Jacob Bunk Nielsen (24-06-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 24-06-01 19:49

junk@osxhacks.com (Christian Flintrup) writes:

> altså 2 x "er" i samme URL-felt - og den begynder med et nyt "?".

Det lyder som om du bruger GET i din form. Prøv at bruge POST i
stedet.

> Hvis ingen har noget imod det, kan jeg da godt smide et link til
> systemet her - men anses det for reklame?

Ja, det vil nok gøre det lidt lettere at se hvor fejlen ligger.

--
Jacob
It's not a lie. It's just a very special kind of truth.

Olicom Crossfire 8400 switch til salg, send et bud ...

Christian Flintrup (24-06-2001)
Kommentar
Fra : Christian Flintrup


Dato : 24-06-01 21:32

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

> Det lyder som om du bruger GET i din form. Prøv at bruge POST i
> stedet.

Tusind tak! Det løste mit problem.

Så lærte jeg også det mere :)

Scriptet kan beses på
<http://forfatterleksikon.dk/dk/html/insp/ojne.php>.

--
Christian

Jonas Delfs (24-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-06-01 21:37

"Christian Flintrup" <junk@osxhacks.com> skrev i en meddelelse
news:1evj2iv.1h09gpnx17fboN%junk@osxhacks.com...

> > Det lyder som om du bruger GET i din form. Prøv at bruge POST i
> > stedet.
>
> Tusind tak! Det løste mit problem.
>
> Så lærte jeg også det mere :)

Problemet er ikke blevet løst, bare skjult ved at lade variablerne være
hidden.
Hvorfor ikke finde ud af hvad problemet egentligt er? -så undgår du sikkert
også problemer i fremtiden...

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Stefan Bruhn (24-06-2001)
Kommentar
Fra : Stefan Bruhn


Dato : 24-06-01 21:41

On Sun, 24 Jun 2001 22:36:38 +0200, "Jonas Delfs"
<jonas@nospam.delfs.dk> wrote:

>Problemet er ikke blevet løst, bare skjult ved at lade variablerne være
>hidden.
>Hvorfor ikke finde ud af hvad problemet egentligt er? -så undgår du sikkert
>også problemer i fremtiden...

Problemet er vel at han bruger GET til en URL der indeholder en
querystring allerede.
med GET vedhæfter den vel bare ?variable=værdi, efter url'en den sender
til.

Så kommer der to x ? og det går jo ikke.

Mvh. / Regards Stefan Bruhn
--
<?$email = unserialize("a:15:{i:0;i:115;i:1;i:116;i:2;i:101;i:3;i:102
;i:4;i:97;i:5;i:110;i:6;i:64;i:7;i:98;i:8;i:114;i:9;i:117;i:10;i:104
;i:11;i:110;i:12;i:46;i:13;i:116;i:14;i:111;}");
for ($i=0;$i<=15;$i++) {echo chr($email[$i]);}?>

Jonas Delfs (24-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-06-01 21:51

"Stefan Bruhn" <news003@3x7.dk> skrev i en meddelelse
news:71kcjtcb7abs1e0tkua9v686celubicmhd@ghashul.dk...

> >Problemet er ikke blevet løst, bare skjult ved at lade variablerne være
> >hidden.
> >Hvorfor ikke finde ud af hvad problemet egentligt er? -så undgår du
sikkert
> >også problemer i fremtiden...
>
> Problemet er vel at han bruger GET til en URL der indeholder en
> querystring allerede.

Nu er det sådan at man ikke kan GET'e til en URL med en QUERY-STRING, som
fx. action="flaf.php?hej=dav" - det kan man kun med POST.
Vil man bruge GET, må man også krybe til korset, og lave hidden-felter.

Eller jeg misforstår måske din pointe ?

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Stefan Bruhn (24-06-2001)
Kommentar
Fra : Stefan Bruhn


Dato : 24-06-01 21:59

On Sun, 24 Jun 2001 22:50:44 +0200, "Jonas Delfs"
<jonas@nospam.delfs.dk> wrote:

>Nu er det sådan at man ikke kan GET'e til en URL med en QUERY-STRING, som
>fx. action="flaf.php?hej=dav" - det kan man kun med POST.
>Vil man bruge GET, må man også krybe til korset, og lave hidden-felter.
>
>Eller jeg misforstår måske din pointe ?

Det mindes jeg da at have gjort. Resultatet var ikke så godt (de samme
probs som Christians tror jeg).

Så jeg brugte POST istedet.

Mvh. / Regards Stefan Bruhn
--
<?$email = unserialize("a:15:{i:0;i:115;i:1;i:116;i:2;i:101;i:3;i:102
;i:4;i:97;i:5;i:110;i:6;i:64;i:7;i:98;i:8;i:114;i:9;i:117;i:10;i:104
;i:11;i:110;i:12;i:46;i:13;i:116;i:14;i:111;}");
for ($i=0;$i<=15;$i++) {echo chr($email[$i]);}?>

Jonas Delfs (24-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-06-01 22:09

"Stefan Bruhn" <news003@3x7.dk> skrev i en meddelelse
news:r3lcjtkulkoh80a6dvskb457are578lrtr@ghashul.dk...

> >Nu er det sådan at man ikke kan GET'e til en URL med en QUERY-STRING, som
> >fx. action="flaf.php?hej=dav" - det kan man kun med POST.
> >Vil man bruge GET, må man også krybe til korset, og lave hidden-felter.
> >
> >Eller jeg misforstår måske din pointe ?
>
> Det mindes jeg da at have gjort.

Det tror jeg næppe - prøv selv at lave et forsøg.

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Christian Flintrup (24-06-2001)
Kommentar
Fra : Christian Flintrup


Dato : 24-06-01 22:01

Jonas Delfs <jonas@nospam.delfs.dk> wrote:

> Eller jeg misforstår måske din pointe ?

Jeg har ikke brug for at embedde query-strings direkte i action="blah
blah". De eneste 2 parametre der skal sendes fra formen, er username og
password. Disse parametre sendes så videre til login.php, som md5'er og
generer et sessionid. Men så "overfører" den de parametre, der allerede
er i adresselinien.

Damn hvor ville det være meget nemmere hvis digiweb kørte PHP4 - så
ville jeg køre med sessions...

--
Christian

Christian Flintrup (24-06-2001)
Kommentar
Fra : Christian Flintrup


Dato : 24-06-01 21:58

Stefan Bruhn <news003@3x7.dk> wrote:

> Så kommer der to x ? og det går jo ikke.

Nu har jeg ændret den til POST.

Umiddelbart så det ud til at virke, men jeg tog vist fejl.

Problemet er der stadig...

Hvad er det helt præcis, der bestemmer om den skal erstatte URL-linien
eller om den skal tilføje det efter URL-linien?

Tak for svarene indtil videre!

--
Christian

Jonas Delfs (24-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-06-01 22:07

"Christian Flintrup" <junk@osxhacks.com> skrev i en meddelelse
news:1evj3qe.1cd4kc91ckys3N%junk@osxhacks.com...

> > Så kommer der to x ? og det går jo ikke.
>
> Nu har jeg ændret den til POST.
>
> Umiddelbart så det ud til at virke, men jeg tog vist fejl.
>
> Problemet er der stadig...

Hvad sagde jeg... :)

> Hvad er det helt præcis, der bestemmer om den skal erstatte URL-linien
> eller om den skal tilføje det efter URL-linien?

Det er der ikke noget HTML der definerer - hvis du ikke siger andet, er det
lige før jeg vil anklage dig for at gøre det med vilje :)
Du har ikke et hidden-felt indeholdende $QUERY_STRING, eller lign. ? -prøv
at vise noget kode

> Tak for svarene indtil videre!

You're welcome.

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Christian Flintrup (24-06-2001)
Kommentar
Fra : Christian Flintrup


Dato : 24-06-01 22:16

Jonas Delfs <jonas@nospam.delfs.dk> wrote:

> -prøv
> at vise noget kode

OK :)

Flg. er selve login-feltet (kun et udsnip af koden)
- - - - - - -

<form name="login<? echo time(); ?>" action="login.php" method="post">
<td bgcolor="#d5d5d5" nowrap height="20">Du er logget ind som <?php echo
$username; ?>.</td>
<td bgcolor="#d5d5d5" align="right" nowrap
height="20"><a href="<? echo $thispage; ?>?whattodo=logout&username=<?
echo $username; ?>&sid=<? echo $sid; ?>">Log ud</a></td><?php
} else {
if($whattodo != "logout") { ?>
<td bgcolor="#d5d5d5" nowrap align="left" height="20">Du
er ikke logget ind.</td>
<? }; ?>
<td bgcolor="#d5d5d5" align="right" nowrap height="20">
Brugernavn: <input type="text" name="username" size="10"
maxlength="63"> Kode: <input type="password" name="password" size="10"
maxlength="63"> <input type="submit" name="ok" value="Log ind">
</td>
<td bgcolor="#d5d5d5" nowrap align="center"
height="20"><a href="add-user.php?username=<? echo $username; ?>&sid=<?
echo $sid; ?>">Opret bruger</a></td>
</form>

- - - - - - -
Når man så submitter, får login.php fat i det og laver flg.:
(Generer session-id og stiller brugeren videre til det rette sted)
- - - - - - -

<? $http_ref = getenv("HTTP_REFERER");
require("functions.php");
db_connect();
$password = md5($password);
$result = mysql_query("select * from users where username =
'$username'");
$row = mysql_fetch_array($result);
if($row["password"] != $password or $result == "3") {
header("Location:
http://forfatterleksikon.dk/dk/html/insp/loginok.php?username=$username&
whattodo=badpw");
} else {
$sid = md5($password.time());
$result = mysql_query("update users set sid = '$sid' where
username = '$username'");
if($result = 1) {
$sid_ok = "yes";
};
if (strstr($http_ref, "add.php")) {
header("Location:
http://forfatterleksikon.dk/dk/html/insp/loginok.php?username=$username&
sid=$sid&whattodo=login&sid_ok=$sid_ok");
} else {
header("Location:
$http_ref?username=$username&sid=$sid&whattodo=login&sid_ok=$sid_ok");
};
};

- - - - - - -
Det er ikke så overskuelig med 80-tegns bredde :)

--
Christian

Jonas Delfs (24-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-06-01 22:36

"Christian Flintrup" <junk@osxhacks.com> skrev i en meddelelse
news:1evj4fk.ys97iupov87fN%junk@osxhacks.com...

> > -prøv
> > at vise noget kode
>
> OK :)
>

[snip en masse kode]

> - - - - - - -
> Det er ikke så overskuelig med 80-tegns bredde :)

Korrekt - og for at lette arbejdet for o's må du gerne lige fortælle hvilket
led fejlen sker i! :)
Er det når du poster, når der viderestilles via header() eller hvornår?

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Per Thomsen (24-06-2001)
Kommentar
Fra : Per Thomsen


Dato : 24-06-01 22:48


"Christian Flintrup" <junk@osxhacks.com> skrev i en meddelelse
news:1evj4fk.ys97iupov87fN%junk@osxhacks.com...
> Jonas Delfs <jonas@nospam.delfs.dk> wrote:
>
> > -prøv
> > at vise noget kode
>
> OK :)
[snip - en masse kode]
>
> <? $http_ref = getenv("HTTP_REFERER");
[snip - mere kode]
> header("Location:
> $http_ref?username=$username&sid=$sid&whattodo=login&sid_ok=$sid_ok");
[snip]

Din kode er svær at læse, men jeg tror at jeg kan se problemet.

Lad os antage at din startside hedder "login.php". Første gang du sender
ovenstående header $http_ref være "login.php".
Anden gang vil $http_ref være
"login.php?username=someuser&sid=sess_id&whattodo=login&sid_ok=something
"
Hvilket betyder at du får sendt denne location anden gang:
"login.php?username=someuser&sid=sess_id&whattodo=login&sid_ok=something
?username=someuser&sid=sess_id&whattodo=login&sid_ok=something"

Prøv at lave noget i stil med:
list($http_ref, ) = explode("?", genenv("HTTP_REFERER");

MVH Per Thomsen,
http://www.pert.dk/


Finn Nielsen (25-06-2001)
Kommentar
Fra : Finn Nielsen


Dato : 25-06-01 06:42

"Per Thomsen" <pert@pert.dk> writes:

> > <? $http_ref = getenv("HTTP_REFERER");
> [snip - mere kode]
> > header("Location:
> > $http_ref?username=$username&sid=$sid&whattodo=login&sid_ok=$sid_ok");
> [snip]

[snip]

> Prøv at lave noget i stil med:
> list($http_ref, ) = explode("?", genenv("HTTP_REFERER");

Man kunne også bruge $PHP_SELF istedet for $HTTP_REFERER. Der er jo ingen
garanti for at $HTTP_REFERER overhovedet er defineret.

--
Finn Nielsen - http://www.zznyyd.dk/

Jonas Delfs (25-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 25-06-01 12:32

"Finn Nielsen" <usenet01@zznyyd.dk> skrev i en meddelelse
news:m3sngpm7yp.fsf@ares.zznyyd.dk...

> > > <? $http_ref = getenv("HTTP_REFERER");
> > > header("Location:
> > > $http_ref?username=$username&sid=$sid&whattodo=login&sid_ok=$sid_ok");

> > Prøv at lave noget i stil med:
> > list($http_ref, ) = explode("?", genenv("HTTP_REFERER");

> Man kunne også bruge $PHP_SELF istedet for $HTTP_REFERER. Der er jo ingen
> garanti for at $HTTP_REFERER overhovedet er defineret.

Øh? $PHP_SELF giver stien på der hvor du er nu - ikke hvilken side der har
sendt dig der hen.

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Finn Nielsen (25-06-2001)
Kommentar
Fra : Finn Nielsen


Dato : 25-06-01 15:28

"Jonas Delfs" <jonas@nospam.delfs.dk> writes:

> "Finn Nielsen" <usenet01@zznyyd.dk> skrev i en meddelelse
> news:m3sngpm7yp.fsf@ares.zznyyd.dk...
>
> > > > <? $http_ref = getenv("HTTP_REFERER");
> > > > header("Location:
> > > > $http_ref?username=$username&sid=$sid&whattodo=login&sid_ok=$sid_ok");
>
> > > Prøv at lave noget i stil med:
> > > list($http_ref, ) = explode("?", genenv("HTTP_REFERER");
>
> > Man kunne også bruge $PHP_SELF istedet for $HTTP_REFERER. Der er jo ingen
> > garanti for at $HTTP_REFERER overhovedet er defineret.
>
> Øh? $PHP_SELF giver stien på der hvor du er nu - ikke hvilken side der har
> sendt dig der hen.

Ok, jeg har ikke læst hele tråden. Jeg så det som han submitter fra
login.php til login.php og brugte $HTTP_REFERER til at finde ud af at
at hvor han var..

--
Finn Nielsen - http://www.zznyyd.dk/

Christian Flintrup (25-06-2001)
Kommentar
Fra : Christian Flintrup


Dato : 25-06-01 17:27

Finn Nielsen <usenet01@zznyyd.dk> wrote:

> Ok, jeg har ikke læst hele tråden. Jeg så det som han submitter fra
> login.php til login.php og brugte $HTTP_REFERER til at finde ud af at
> at hvor han var..

Det er også rigtigt. Men det virker nu vha. explode.

Tak, Finn, og alle andre.
jeg kunne også have brugt PHP_SELF og sendt den med i en query string
til login.php

Men nu bruger jeg explode / list.

Endnu en gang, tak!

--
Christian

Søg
Reklame
Statistik
Spørgsmål : 177522
Tips : 31968
Nyheder : 719565
Indlæg : 6408672
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste