Avatar billede hav0k Nybegynder
28. december 2005 - 20:13 Der er 15 kommentarer og
2 løsninger

include virker ikke?

Jeg har flg. include script:

if(isset($_GET["page"])){
    include("house/" . $_GET["page"] .".php");
}else{
    include("house/main.php");
}
Nu prøver jeg r at kalde filen register.php inde fra house mappen vha dette script

Register.php:

<h3>Join</h3>

<?php
//Login part
if($_GET["check"] == "login"){
    if(isset($_POST["login_submit"])) { //Tester om brugeren kommmer fra login form
    $postpw = md5($_POST["pw"]);
    $postemail = customAddslashes($_POST["email"]);
   
    $query = mysql_query("SELECT * FROM users WHERE email = '$postemail' AND pw = '$postpw'") or die(mysql_error()); //Spørger efter ID
   
    $count = mysql_num_rows($query); //Tæller antaller af resultater
        if($count == 1) { //Hvis der kun er et resultat logged in
            while ($row = mysql_fetch_array ($query)) {
                $_SESSION["id"] = $row["id"];
                $_SESSION["email"] = $row["email"];
                $_SESSION["pw"] = $row["pw"];
            }
            $step = "house";
           
        }else{
            $loginstatus = "Wrong e-mail and/or password!";
            $step = "login";
        }
    }
}
if($_GET["step"] == "login"){
    $pageback = "?page=main";
    $pagenext = "house/register.php";
    $check = "login";
    include("login.php");
}

//If new user is selected from step=login, then terms are shown:
if($_GET["check"] == "terms"){
    //validate terms
    echo "Validating terms";
    $step = "newuser";
}
if($_GET["step"] == "terms"){
    $pageback = "?page=register&step=login";
    $pagenext = "house/register.php";
    $check = "terms";
    include("agreement.php");
}

//New user form
if($_GET["check"] == "newuser"){
    //validate newuser
    echo "Validating newuser";
    $step = "house";
}
if($_GET["step"] == "newuser")
    $pageback = "?page=register&step=terms";
    $pagenext = "house/register.php";
    $check = "newuser";
    include("register.php");
}

//Add house form
if($_GET["check"] == "house"){
    //validate house
    echo "Validating house";
    $step = "finish";
}
if($_GET["step"] == "house")
    if($_GET["sender"] == login){   
        $pageback = "?page=register&step=login";
    }elseif($_GET["sender"] == newuser){
        $pageback = "?page=register&step=newuser";
    }
    $pagenext = "house/register.php";
    $check = "house";
    include("house/addhouse.php");
}

if($_GET["step"] == "finish"){
    echo "Thanks for submitting.";
}
?>

Men resultatet er en helt blank side, man kan ikke engang se den øverste overskrift <h3>Join</h3>. Hvordan kan det være?
Jeg har prøvet at include andre side en lige register.php hvor det virkede fint, så problemet ligger altså et eller andet sted i denne fil. Til generel orientering er register_globals sat til off.
Avatar billede hav0k Nybegynder
28. december 2005 - 20:14 #1
Undskyld stavefjelene (..)
Avatar billede jaw Nybegynder
28. december 2005 - 20:15 #2
Prøv at indsætte nogen echo'es.

Echo "Include ".$_GET['page'].".php";

og se om den så skriver det rigtige. Og evt. prøv at include den i en helt blank fil, hvor du angiver den "manuelt".
Avatar billede hav0k Nybegynder
28. december 2005 - 20:30 #3
Hvis jeg indsætter den echo før den includer register.php så skriver dne helt korrekt: include("house/register.php"), men indsætter jeg den efter include af register.php så er det igen en helt blank side. Lidt som om at register.php indeholdt en exit; i begyndelsen (hvilket den jo ikke gør).
Avatar billede jaw Nybegynder
28. december 2005 - 20:33 #4
Satte du den i if'en? Kommer den rigtigt derind...?
Avatar billede hav0k Nybegynder
28. december 2005 - 20:56 #5
Satte den inde i if'en på den side som inkluderer register.php.

Har derudover fundet ud af (ved udelukkelsesmetoden) at det er flg del af register.php som gør at det ligner en exit; :

if($_GET["step"] == "login"){
    $pageback = "?page=main";
    $pagenext = "house/register.php";
    $check = "login";
    include("login.php");
}

//If new user is selected from step=login, then terms are shown:
if($_GET["check"] == "terms"){
    //validate terms
    echo "Validating terms";
    $step = "newuser";
}
if($_GET["step"] == "terms"){
    $pageback = "?page=register&step=login";
    $pagenext = "house/register.php";
    $check = "terms";
    include("agreement.php");
}

//New user form
if($_GET["check"] == "newuser"){
    //validate newuser
    echo "Validating newuser";
    $step = "house";
}
if($_GET["step"] == "newuser")
    $pageback = "?page=register&step=terms";
    $pagenext = "house/register.php";
    $check = "newuser";
    include("register.php");
}

//Add house form
if($_GET["check"] == "house"){
    //validate house
    echo "Validating house";
    $step = "finish";
}
if($_GET["step"] == "house")
    if($_GET["sender"] == login){ 
        $pageback = "?page=register&step=login";
    }elseif($_GET["sender"] == newuser){
        $pageback = "?page=register&step=newuser";
    }
    $pagenext = "house/register.php";
    $check = "house";
    include("house/addhouse.php");
}

if($_GET["step"] == "finish"){
    echo "Thanks for submitting.";
}
Avatar billede hav0k Nybegynder
28. december 2005 - 21:08 #6
Har nu fået det udelukket til:

if($_GET["step"] == "newuser")
    $pageback = "?page=register&step=terms";
    $pagenext = "house/register.php";
    $check = "newuser";
    include("register.php");
}

og:

if($_GET["step"] == "house")
    if($sender == "login"){   
        $pageback = "?page=register&step=login";
    }elseif($sender == "newuser"){
        $pageback = "?page=register&step=newuser";
    }
    $pagenext = "house/register.php";
    $check = "house";
    include("house/addhouse.php");
}


De dele af register.php er altså årsag til at siden bliver blank. Hvad er det lige præcis som gør det?
Avatar billede jaw Nybegynder
28. december 2005 - 21:19 #7
Det kan jeg ikke lige overskue, jeg ved jo ikke hvad der sker når der sker noget. Men du kan da outcomment'e dine linier een ad gangen med // foran og se om du rammer en fejl på et tidspunkt.
Avatar billede hav0k Nybegynder
28. december 2005 - 21:34 #8
Det der sker er at man kan se overskriften <h3>Join</h3> når de to ovenstående stykker kode IKKE er med. Når de er det forsvinder den og alt andet jeg prøver at echo'e efter include scriptet af register.php.

Prøver mig lige frem med at outcommente
Avatar billede hav0k Nybegynder
28. december 2005 - 21:43 #9
Det hele virker, lige indtil if klausulerne tages i brug:


if($_GET["step"] == "newuser")
}

og

if($_GET["step"] == "house")
}

selve indholdet i de to if'er virker godt nok, det er først når if'erne sættes op at siden bliver blank. Hvordan i h**** hænger det sammen?
Avatar billede jaw Nybegynder
28. december 2005 - 22:19 #10
Du kunne jo evt. prøve at gøre den helt syntax-mæssigt korrekt:

if(isset($_GET['step']) && $_GET['stemp'] == "newuser") {
...
} else if(isset($_GET['step']) && $_GET['step'] == "house") {
...
}

...men jeg kan ikke helt se at det burde give problemer det du har dér.
Avatar billede hav0k Nybegynder
29. december 2005 - 17:26 #11
Næ.. det gør ikke nogen forskel - nu har jeg sat reward'en op til 200 point, for skal virkelig finde ud af hvad søren der er galt! Anyone?
Avatar billede hav0k Nybegynder
29. december 2005 - 17:37 #12
Jeg har fundet fejlen. Det er simpelthen den største bommert jeg har lavet til dato, og så enkel:

if($_GET["step"] == "newuser")
}

og

if($_GET["step"] == "house")
}

Hvad er der galt? JO - der mangler sørme lige to { efter "house")

Sådan så det ser således ud:

if($_GET["step"] == "newuser")  {
}

og

if($_GET["step"] == "house")  {
}

suk*.. jeg er håbløs.
Avatar billede hav0k Nybegynder
29. december 2005 - 17:38 #13
Men tak for hjælpen - læg et svar du har fortjent halvdelen af pointene for din tid i det mindste :)
Avatar billede jaw Nybegynder
29. december 2005 - 17:40 #14
Ok. Så sidder du på en server, der ikke rapporterer syntax-fejl tilsyneladende, og med kodestumper ville jeg jo ALDRIG kunne finde den fejl :)

I fremtiden, så smid:
ini_set('error_reporting', E_ALL);

ind i toppen af dine php-filer mens du fejlfinder, så vil den give dig de fejl du nu har på siden...

Og selv tak :)
Avatar billede hav0k Nybegynder
29. december 2005 - 19:31 #15
Allright det er jo meget godt at vide :) thx.
Avatar billede Slettet bruger
30. december 2005 - 16:18 #16
Jaw: Det hjælper ikke på Parse-fejl, for de kommer før der bliver udført noget som helst kode på siden. Dermed når ini_set() heller ikke at blive udført.
Avatar billede jaw Nybegynder
30. december 2005 - 17:35 #17
Nej, der kan du selvfølgelig have en pointe...
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