Gå til innhold

Problem med if struktur.


Anbefalte innlegg

Hei!

Scriptar litt PHP for tida, og støtte på eit problem.

<html>
<head>
<title> Hehe, lol. </title>
</head>
<body>
<?php
    if($_POST['navn'] = "navn" AND $_POST['pass'] = "pass"){
    
    
    echo 'Du er logga inn!';
    }
    else { 
    echo "
    <h1>Yo!</h1>
    <h2>Logg inn!</h2>
    <form action='index.php' method='post'>
    <p>Brukarnamn:</p>
    <input type='text' name='navn'>
    <p>Passord:</p>
    <input type='text' name='pass'>
    <input type='submit' value='Logg inn!'>
    </form>";
    }
    ?>
    </body>
    </html>

På dette får eg berre igjen "Du er innlogga".

Det er sikkert noko feil med if-strukturen min.

Vell, de ser sikkert kva eg vil med den, men korleis få den rett?

 

NYTT SPM! SJÅ POST 4!

Endret av Fjott
Lenke til kommentar
Videoannonse
Annonse

Hei,

 

Du må ha doble likhetstegn i if-kondisjonen din.

 

if($_POST['navn'] == "navn" AND $_POST['pass'] == "pass"){

 

if ($foo = "bar") {
 // Dersom det gikk an å sette variabelen $foo til "bar"
}

if ($foo == "bar") {
 // Dersom variabelen $foo er "bar"
}

Lenke til kommentar

Eg har eit nytt problem...

Eg har tenkt å bruke ein kjeks for å vise at du er innlogga.

Derfor bruker eg denne koden:

<html>
<head>
<title>LOLI! </title>
</head>
<body>
<?php
    if($_POST['navn'] == "navn" AND $_POST['pass'] == "pass"){
    setcookie("on");
    
    
    
    echo 'Du er logga inn!';
    }
    else { 
    echo "
    <h1>Lol!</h1>
    <h2>Logg inn!</h2>
    <form action='index.php' method='post'>
    <p>Brukarnamn:</p>
    <input type='text' name='navn'>
    <p>Passord:</p>
    <input type='text' name='pass'>
    <input type='submit' value='Logg inn!'>
    </form>";
    }
    ?>
    </body>
    </html>

Viss brukarnamn og passord er rett får eg:

Warning: Cannot modify header information - headers already sent by (output started at /home/arneweb/web/admin.arneweb.com/index.php:6) in /home/arneweb/web/admin.arneweb.com/index.php on line 8
Du er logga inn!

Viss ikkje, kjem du tilbake til hovudsida (det er rett).

 

Kva er den advarselen, og kva gjer eg feil?

Lenke til kommentar

Feilen betyr at du har skrevet ut noe før du forsøkte å sende header informasjon (setcookie).

Du må bruke den fuksjonen før all annen output (DVS. før du "skriver noe til skjermen").

 

Du kan f.eks gjøre slik:

if(!isset($_COOKIE["on"])) { // Sjekker om kaken er satt
  if(isset($_POST["navn"])) { // Sjekker om form er sendt
     if($_POST['navn'] == "navn" AND $_POST['pass'] == "pass"){ 
        setcookie("on", "true", time()+60*60*24*365); //Setter kaken 
     }
     header("location:$PHP_SELF");
  }
  else {
     //Vis login skjemaet
  }
}
else {

  echo "Du er logget inn";

}

setcookie setter kaken "on" til "true", og lar den være gyldig i ett år. Dette kan du endre selv...

Med forbehold om små slørve feil, og feilstaving. Håper du skjønner cluet, ihvertfall. Det finnes nok en enklere måte å skrive koden på. Håper du skjønne gangen i det.

 

EDIT: Fjernet litt kommentarer, for å prøve å få koden til å se litt bedre ut...

Endret av kakkle
Lenke til kommentar

vel en grunn (for meg) er at det er "lettere"..

 


<?php

// Helt i toppen av fila

session_start();

if($_POST['navn'] == "navn" && $_POST['pass'] == "pass") {
 $_SESSION['JegErLoggaPaa'] = true;
}
elseif($_SESSION['JegErLoggaPaa'] && $_GET['logmeout'] == 1) {
 session_unset();
 header("Location: fila_du_er_i.php");
}
else {
echo "du må logge deg på";
}


?>


for å slette sessionen skriver du: session_unset();

(rett meg opp )

Endret av robgar
Lenke til kommentar
Gjest Slettet+6132
Kvar i fila skal doctype, <html>,<head></head> og <body> vere då?

5524012[/snapback]

 

EDIT: Med sessions o.l må dette komme FØRST.

 

<?php
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
<title>Foo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="foobar.css" type="text/css" media="all" />
</head>

<body>
<!--Content-->
</body>

</html>

Endret av Slettet+6132
Lenke til kommentar

No har eg denne koden:

<?php
    if($_POST['navn'] == "navn" AND $_POST['pass'] == "pass"){
    setcookie("on");
    echo "
          <html>
          <head>
          <title> Lol</title>
          </head>
          <body>";
    
    
    
    echo 'Du er logga inn!';
    }
    else { 
    echo "
          <html>
          <head>
          <title> Lol</title>
          </head>
          <body>";
          
    
    
    
    
    
    
    
    
    
    
    echo "
    <h1>Lol</h1>
    <h2>Logg inn!</h2>
    <form action='index.php' method='post'>
    <p>Brukarnamn:</p>
    <input type='text' name='navn'>
    <p>Passord:</p>
    <input type='text' name='pass'>
    <input type='submit' value='Logg inn!'>
    </form>";
    }
    ?>
    </body>
    </html>

, og får denne feilmeldinga:

Warning: Cannot modify header information - headers already sent by (output started at /home/arneweb/web/admin.arneweb.com/index.php:2) in /home/arneweb/web/admin.arneweb.com/index.php on line 4
Du er logga inn!

Kva gjer eg feil no? Det første eg sender er jo kjeksen, så....

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...