Gå til innhold

Problem med if struktur.


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet

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"
}

Skrevet

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?

Skrevet (endret)

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
Skrevet

Cluet er at du må ha det FØR <html> også...

Du kan jo seff flytte if setningen helt til topps, og flytte <html> og resten til etter else blokken...

Skrevet (endret)

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
Gjest Slettet+6132
Skrevet (endret)
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
Skrevet

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å....

Skrevet

Og du er sikker på at du har <? helt i toppen av dokumentet, uten noen mellomrom foran ? Dersom det er space foran <? så vil dette bli utskrift til browser, og dermed vil headers allerede være sendt.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...