Avatar billede hav0k Nybegynder
27. juni 2004 - 12:22 Der er 11 kommentarer og
1 løsning

Include script virker ikke med mere end 1 variabel - Hjælp!

Jeg brugte flg. script til at inkludere sider på min hp (www.troelscvarming.dk), i starten, hvilket ikke virkede på serveren:

<?
if($page){
    $url = $page . ".php";
    include("$url");
}else{
    include("main.php");
}
?>

Dernæst fik jeg hjælp til at bruge flg. script (REF: http://eksperten.dk/spm/513788):

<?
if(isset($_GET["page"])){
    if(is_file($_SERVER["DOCUMENT_ROOT"] ."/". $_GET["page"] .".php")){
    include($_GET["page"] .".php");
    }else{
    include("main.php");
    }
}else{
include("main.php");
}
?>

Det virkede i det mindste så jeg kunne navigere rundt på de forskellige sider; $page virkede altså. Problemet ved dette script er at den åbenbart ikke kan håndtere andre variabler end $page - for hvis jeg fx åbner flg. link: ?page=part.show&ref=lacroix, så vil den kun åbne siden part.show.php mens $ref  ikke ser ud til at eksistere!

Jeg skal meget gerne bruge et brugbart svar meget hurtigt da det er en hjemmeside til et firma som meget snart skal være færdigt.

//Hav0k
Avatar billede jammerlab Nybegynder
27. juni 2004 - 12:23 #1
Det er noget med globals ikke er slået til på serveren... så kan du ikke bruge det du gør i link, men mener jeg fik en smart løsning 2.sek
Avatar billede jammerlab Nybegynder
27. juni 2004 - 12:24 #2
Lav en ny fil som hedder ehm? gnu.php (eller whatever)

gnu.php:

<?
if ($_GET) { // GET
        foreach($_GET as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_POST) { // POST
        foreach($_POST as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_COOKIE) { // cookies
        foreach($_COOKIE as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_ENV) { // environment/miljø
        foreach($_ENV as $Key=>$Value){
            $$Key = $Value;
        }
    }

    if ($_SERVER) { // server
        foreach($_SERVER as $Key=>$Value){
            $$Key = $Value;
        }
    }
    if ($HTTP_POST_VARS) { // server
        foreach($HTTP_POST_VARS as $Key=>$Value){
            $$Key = $Value;
        }
    }
?>

Prøv om det så ikke fungere som det skal...
Avatar billede hav0k Nybegynder
27. juni 2004 - 12:26 #3
Skal jeg inkludere ehm.. gnu.php på forsiden?
Avatar billede jammerlab Nybegynder
27. juni 2004 - 12:27 #4
Du skal include den i toppen af alle dine dokumenter :)
Avatar billede hav0k Nybegynder
27. juni 2004 - 12:27 #5
kk.. prøver lige - brb ^^
Avatar billede dennismp Nybegynder
27. juni 2004 - 12:29 #6
Hvis du skal have fat i fx ref fra url'en: "page=part.show&ref=lacroix" så skriver du blot $_GET['ref'];

Hvis du vil slå register_globals til, så lave en .htaccess (hvis det er under apache) og skriv:

php_flag register_globals on

i den. Så burde $page og $ref være der automatisk (men dette er grimt kode, derfor er den pr defautl slået fra)
Avatar billede dennismp Nybegynder
27. juni 2004 - 12:31 #7
// Dette gør det samme som talkers kode

extract($_GET);
extract($_POST);
extract($_COOKIE);
extract($_SERVER);
extract($_ENV);

.. men brug enten $_GET eller .htaccess istedet. Det kan du ligeså godt.
Avatar billede hav0k Nybegynder
27. juni 2004 - 12:34 #8
You're my saviour man :) læg et svar !
Avatar billede hav0k Nybegynder
27. juni 2004 - 12:34 #9
Altså talker ^^ det virkede fint!
Avatar billede jammerlab Nybegynder
27. juni 2004 - 12:35 #10
Guess that would be me?
Avatar billede hav0k Nybegynder
27. juni 2004 - 12:48 #11
Guess you're right :)
Avatar billede dennismp Nybegynder
27. juni 2004 - 12:48 #12
if ($HTTP_POST_VARS) { // server
        foreach($HTTP_POST_VARS as $Key=>$Value){
            $$Key = $Value;
        }
    }

er overflødigt, da du allerede bruger $_POST
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