Avatar billede donslund Nybegynder
02. marts 2003 - 19:18 Der er 16 kommentarer og
1 løsning

Redirecte

Jeg ved der er en masse spørgsmål angående dette emne, men jeg fatter det simpelthen ikke.

Kan jeg ikke få lov til at redirecte hvis min if-sætning er sand?

<?
if ($mode == "login") {
    mysql_connect("localhost", "donslund", "veterankasse");
    mysql_select_db("veteranbil");
    $Hent = mysql_query("Select * from medlemmer where brugernavn='$brugernavn' and password='$password'");
    $fundt = mysql_num_rows($Hent);
    if ($brugernavn == $fundt && $password == $fundt) {
        print "Forkert brugernavnpassword";
    } else {
        print "Fundet :)";
--->    header("Location: showpage.php");
    }
} else {
    print "Hello World";
    print "<form method=\"post\" action=\"login.php?mode=login\">";
    print "<input type=\"text\" name=\"brugernavn\"><br>";
    print "<input type=\"password\" name=\"password\"><br>";
    print "<input type=\"submit\">";
    print "</form>";
}
?>
Avatar billede hsg Nybegynder
02. marts 2003 - 19:21 #1
Jo du kan, men jeg gætter på at du får en fejlmeddelese i stil med
Avatar billede donslund Nybegynder
02. marts 2003 - 19:23 #2
Warning: Cannot modify header information - headers already sent by (output started at /www/vorbasse.dk/subdomains/veteranbiler/medlem/login.php:10) in /www/vorbasse.dk/subdomains/veteranbiler/medlem/login.php on line 11
Avatar billede hsg Nybegynder
02. marts 2003 - 19:23 #3
grrr....prøver igen :-)
i stil med: Header already sent. Du må ikke lave html eller print inden du laver redirect.
Avatar billede donslund Nybegynder
02. marts 2003 - 19:24 #4
Hvordan vender jeg så dette om?

if ($brugernavn == $fundt && $password == $fundt) {
        print "Forkert brugernavnpassword";
    } else {
        print "Fundet :)";
    header("Location: showpage.php");
    }
Avatar billede hsg Nybegynder
02. marts 2003 - 19:27 #5
Vise evt. fejl i den side du er i, eller sende fejlmeddelelser med over til den næste side som fx. en session variabel.
Avatar billede donslund Nybegynder
02. marts 2003 - 19:28 #6
det fattede jeg ikke
Avatar billede erikjacobsen Ekspert
02. marts 2003 - 19:30 #7
Drop linien med
print "Fundet :)";
Den ser man jo alligevel ikke
Avatar billede Slettet bruger
02. marts 2003 - 19:31 #8
if ($brugernavn == $fundt && $password == $fundt) {
        print "Forkert brugernavnpassword";
    } else {
        header("Location: showpage.php");
    }
Avatar billede swaxi Nybegynder
02. marts 2003 - 19:31 #9
kort : du kan ikke både printe noget og samtidig sende headers (eg. redirect'e)
derfor skal du ENTEN bruge print() ELLER bruge header(). fjern denne linie :
    print "Fundet :)";
Avatar billede donslund Nybegynder
02. marts 2003 - 19:32 #10
Den er allerede væk.
Avatar billede donslund Nybegynder
02. marts 2003 - 19:32 #11
Koden ser nu således ud:

<?
if ($mode == "login") {
    mysql_connect("localhost", "donslund", "veterankasse");
    mysql_select_db("veteranbil");
    $Hent = mysql_query("Select * from medlemmer where brugernavn='$brugernavn' and password='$password'");
    $fundt = mysql_num_rows($Hent);
    if ($brugernavn != $fundt or $password != $fundt) {
                header("Location: showpage.php");       
    } else {
        print "Forkert brugernavnpassword";

    }
} else {
    print "Hello World";
    print "<form method=\"post\" action=\"login.php?mode=login\">";
    print "<input type=\"text\" name=\"brugernavn\"><br>";
    print "<input type=\"password\" name=\"password\"><br>";
    print "<input type=\"submit\">";
    print "</form>";
}
?>
Avatar billede erikjacobsen Ekspert
02. marts 2003 - 19:32 #12
Så skal du rette din if til som jeg sagde i dit andet spørgsmål
Avatar billede hsg Nybegynder
02. marts 2003 - 19:33 #13
Du kunne fx. gøre flg:

$msg = '';
if ($brugernavn == $fundt && $password == $fundt) {
$msg = 'Forkert bruger/password';
else {
  header('location: showpage.php');
  return;
}

bla
bla

lige før body:

<?
if (strlen($msg) > 0) {
?>
<script language='javacsript'>
alert('<?= $msg ?>');
</script>
<?
}
?>
Avatar billede Slettet bruger
02. marts 2003 - 19:34 #14
Prøv med:
$fundt = mysql_num_rows($Hent);
    if ($fundt==1) {//Send videre til næste side!
    }
    else
    {
        //Fejl!
Avatar billede donslund Nybegynder
02. marts 2003 - 20:10 #15
Nu ser koden således ud:

<?
if ($mode == "login") {
    mysql_connect("localhost", "donslund", "veterankasse");
    mysql_select_db("veteranbil");
    $Hent = mysql_query("Select * from medlemmer where brugernavn='$brugernavn' and password='$password'");
    $fundt = mysql_num_rows($Hent);
    $msg = '';
        if ($brugernavn == $fundt && $password == $fundt) {
        $msg = 'Forkert bruger/password';
        } else {
  header('location: showpage.php');
  return;
}

} else {
    print "<form method=\"post\" action=\"index.php?mode=login\">";
    print "<input type=\"text\" name=\"brugernavn\"><br>";
    print "<input type=\"password\" name=\"password\"><br>";
    print "<input type=\"submit\">";
    print "</form>";
}
?>

Men den lukker hvad som helst igennem blot enten brugernavn eller password er korrekt.
Skal denne linie:

if ($brugernavn == $fundt && $password == $fundt) {

ikke hedde noget lignende

if ($brugernavn != $fundt or $password != $fundt) {
Avatar billede erikjacobsen Ekspert
02. marts 2003 - 20:11 #16
Prøv at høre hvad jeg og regin siger
Avatar billede donslund Nybegynder
02. marts 2003 - 20:16 #17
Okay okay - regin, du vandt. Tak for tålmodigheden alle sammen
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