Avatar billede xirb Nybegynder
25. marts 2003 - 16:23 Der er 21 kommentarer og
1 løsning

Hvorfor kan jeg ikke sender Header?

Jeg har et simplet (men vigtigt) script, der fungerer upåklageligt på én server, men som ikke virker på en anden server.

Det eneste der burde blive gjort var, at en header skulle sendes (PHP-kode).
Kan der være nogen begrænsning eller blokering i dette pga. af den pågældende server?

Scriptet er består mere eller mindre blot af dette:
header("Location: ".$backto);
(hvor $backto er en variabel der sendes med URL'en, og som så indeholder en anden URL'en, der skal gåes til.)

På den server, hvor det ikke virker sker der blot det, at URL'en bliver stående i adresse-feltet, fx:
"php/test.php?backto=forside.php?viewkat=22"

mens "den samme" URL virker fint på det andet hotel:
"php/test.php?backto=forside.php?viewkat=22"
--> skifter skraks til --> "php/forside.php?viewkat=22"

Da det er det præcis samme script kan jeg næsten kun komme i tanker om en eller anden form for begrænsning eller blokering indsat på serveren som fejlkilde..?

Et bud ville være hvis register_globals var slået fra, men når jeg ser phpinfo() ser det da ud til, at det er sat til ON: ("register_globals | On | On ")

Hvad kan der være galt / hvad kan der gøres?
Tak for hjælpen på forhånd!
Avatar billede ahv Nybegynder
25. marts 2003 - 16:25 #1
header("Location: $backto");


?
Avatar billede ahv Nybegynder
25. marts 2003 - 16:26 #2
eller:

header("Location: $_GET[backto]");
Avatar billede jensendk Nybegynder
25. marts 2003 - 16:34 #3
Som ahv er inde på, check PHP versionerne.. og brug $_GET
Avatar billede xirb Nybegynder
25. marts 2003 - 17:08 #4
Jeg har lige forsøgt med
header("Location: $_GET[backto]");
- det ændrede desværre intet, URL'en bliver fortsat blot stående i adresse-feltet uden der sker mere (der vises blot en hel blank side).
Avatar billede ahv Nybegynder
25. marts 2003 - 17:09 #5
Har du prøvet med:

header("Location: $backto");

? Den er en smule anderledes fra din egen.
Avatar billede xirb Nybegynder
25. marts 2003 - 17:13 #6
Så har jeg forsøgt med
header("Location: $backto");
- ændrer desværre stadig ikke noget - når URL'en "php/test.php?backto=forside.php?viewkat=22" besøges udføres funktionen i "test.php", men mere sker der ikke - URL'en bliver blot stående i adresse-feltet..

Nu da det så åbenbart ikke er det her med at få variablen igennem URL'en der er problemet, er der så andre muligheder?
Avatar billede schaefner Juniormester
25. marts 2003 - 17:15 #7
Prøv at skrive den fulde adresse du vil hen til.
Avatar billede schaefner Juniormester
25. marts 2003 - 17:16 #8
Avatar billede xirb Nybegynder
25. marts 2003 - 17:21 #9
Jeg skrev manuelt hele RUL'en ind i adressen - altså sådan:
http://http://etellerandet.dk/mappe/fil/php/test.php?backto=http://etellerandet.dk/mappe/fil/php/forside.php?viewkat=22

- det virkede heller ikke..
Det er også mærkeligt, for det virker glimrende på et andet webhotel.. Derfor min mistanke om en eller anden servervaribel (åbentbart andet end register_globals)..(?)
Avatar billede xirb Nybegynder
25. marts 2003 - 17:22 #10
(Selvfølgelig kun med 1 x http:// forrest..)
Avatar billede ahv Nybegynder
25. marts 2003 - 17:26 #11
header("Location: $HTTP_GET_VARS[backto]");

Er det ikke det den lange hedder?
Avatar billede schaefner Juniormester
25. marts 2003 - 17:28 #12
Prøv med et simpelt eksempel for at se om det virker. Prøv at lav en tom php-fil med dette indhold:

<?php
header("location: http://exp.dk");
?>

Virker det?
Avatar billede ahv Nybegynder
25. marts 2003 - 17:34 #13
Ellers prøv med:

echo "<script>location.href='$_GET[backto]'</script>";

istedet for din header.
Avatar billede ahv Nybegynder
25. marts 2003 - 17:34 #14
Eller:

echo "<script>location.href='$backto'</script>";
Avatar billede schaefner Juniormester
25. marts 2003 - 17:36 #15
Mere præcis:

echo "<script>document.location.href='$backto'</script>";
Avatar billede xirb Nybegynder
25. marts 2003 - 17:37 #16
schaefner>
Ja, det virker..
Avatar billede xirb Nybegynder
25. marts 2003 - 17:38 #17
ahv>
HOV!
Nu virker det - det var blot deen form der skulle til:
header("Location: $HTTP_GET_VARS[backto]");

- Hved du hvorfor det lige netop er sådan det skal laves?
(Jeg fatter bare ikke, at den gl. version ikke fungerede idet register_globals ER slået til..!?)
Avatar billede ahv Nybegynder
25. marts 2003 - 17:39 #18
xirb >> Prøv med mit forslag eller mit forslag som schaefner rettede ;o)
Avatar billede ahv Nybegynder
25. marts 2003 - 17:39 #19
Jamen så lægger jeg et svar :o)
Avatar billede ahv Nybegynder
25. marts 2003 - 17:44 #20
Jeg er ikke helt inde i dem, må jeg nok sige, ved bare at ved register_globals on skal man bruge $_GET eller $_POST

Ved ikke helt hvornår man bruger den som løste det jeg skrev, kom bare til at tænke på det måske kunne være den ;o)

Denne lille stump kode skulle vist kunne lave disse lange om

if($HTTP_POST_VARS){
    foreach($HTTP_POST_VARS as $Key=>$Value)
    {
    $$Key = $Value;
    }
    }

    if($HTTP_GET_VARS){
    foreach($HTTP_GET_VARS as $Key=>$Value)
    {
    $$Key = $Value;
    }
    }

så $HTTP_GET_VARS[var] bliver til $var
Avatar billede xirb Nybegynder
25. marts 2003 - 18:45 #21
Jeg _tror_ da nok, at det er lige omvendt med register_globals - at det pr. default er slået fra i de nye PHP-versioner, og det er derfor man er tvunget til at bruge de andre metoder til at få fat i variablerne..
Så når det er ON mener jeg da stadig man burde kunne bruge de gl. varibel-typer..
Men nevermind - det virker i hvert fald nu, da de nye metoder bruges.

Tak for svaret ahv og tak for hjælpen også til schaefner!
Avatar billede ahv Nybegynder
25. marts 2003 - 19:09 #22
xirb >> Byttede lige rundt på det ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester