Gå til innhold

Login Script | Legg til loggføring + logav "knapp"


Anbefalte innlegg

<?
if ($_SESSION['innlogget'] = TRUE)
{
$tilgang = '1';
}

else
{
"Hva faen gjør du inne her?!";
include"login2.php";
exit;
}

if ($tilgang == '1')
{
echo "
<input type='submit' name='Loggav' value='Logg av' >
</form> ";
unset( $_SESSION['innlogget'] );
}
?>

 

Riktig? Men hvorfor funker ikke Logg av knappen? Hva har jeg skrevet feil?

Endret av TheClown
Lenke til kommentar
Videoannonse
Annonse
<?
if ($_SESSION['innlogget'] = TRUE)
{
$tilgang = '1';
}

else
{
"Hva faen gjør du inne her?!";
include"login2.php";
exit;
}

if ($tilgang == '1')
{
echo "
<input type='submit' name='Loggav' value='Logg av' >
</form> ";
unset( $_SESSION['innlogget'] );
}
?>

 

Riktig? Men hvorfor funker ikke Logg av knappen? Hva har jeg skrevet feil?

8543659[/snapback]

 

Du har ikke

<form action="" method="POST"> ;)

Lenke til kommentar

<?
if ($_SESSION['innlogget'] = TRUE)
{
$tilgang = '1';
}

Der har du satt $tilgang til '1'. Ingenting galt med det.

else
{
"Hva faen gjør du inne her?!";
include"login2.php";
exit;
}

Der ville jeg hatt en header("Location: login2.php"); istede.

Kanskje ingen som har fortalt det enda, men du kan IKKE ha noen form for output tidligere i koden om du skal bruke header() og session_start().

if ($tilgang == '1')

$tilgang er satt til en, så denne if'en har vi ingen problemer med.

{
echo "
<input type='submit' name='Loggav' value='Logg av' >
</form> ";
unset( $_SESSION['innlogget'] );

Her er den artige biten. Her blir vi logget ut _før_ man har sagt seg enig i det.

}
?>

 

 

Prøv denne koden istede.

 

PHP
<? //Les hva jeg skrev om short-tags tidligere.

 

if ($_SESSION['innlogget'] = TRUE)

{

$tilgang 1;

}

else

{

echo "Hva faen gjør du inne her?!"

include"login2.php";

exit;

}

 

if ($tilgang == 1)

{

if ( isset ( $_POST['Loggav'] ) )

{

session_destroy();

}

else

{

 

echo "<form action='' method='post'>

<input type='submit' name='Loggav' value='Logg av' >

</form> ";

}

}

?>

 

Ståle: validatoren blir ikke særlig glad om du bruker method="POST" ;)

Lenke til kommentar

Umm...

 

Når du har:

PHP
if ($_SESSION['innlogget'] = TRUE)

Så vil den ALLTID være sann. Så kvar bruker som går til den siden vil bli logget inn. Med andre ord, else tagen vil aldri bli brukt.

 

Når det gjelder form tagen, du bør aldri bruke action="" pga at den vil ikkje fungere i alle browsere.

 

Til slutt, når du bruker sessions, må du alltid ha session_start() før du bruker dei. Uten den vil dei aldri fungere. Med andre ord, du må alltid ha session_start på kvar side vist nokre av sidene dine bruker dei. Grunnen til dette er at nokre browsere vil ikkje huske den gamle session iden, pga at den blei ikkje oppdatert på kvar side du besøkte.

 

EDIT:

Angående den IF setningen øverst. bruk:

if ($_SESSION['innlogget'] === true)

Endret av The Red Devil
Lenke til kommentar
Når du har:

PHP

if ($_SESSION['innlogget'] = TRUE)

 

Så vil den ALLTID være sann. Så kvar bruker som går til den siden vil bli logget inn. Med andre ord, else tagen vil aldri bli brukt.

 

Sessionen vil kun gjelde den brukeren som er innlogget, og vil bli ødelagt når siden blir lukket...

Lenke til kommentar
Når du har:

PHP

if ($_SESSION['innlogget'] = TRUE)

 

Så vil den ALLTID være sann. Så kvar bruker som går til den siden vil bli logget inn. Med andre ord, else tagen vil aldri bli brukt.

 

Sessionen vil kun gjelde den brukeren som er innlogget, og vil bli ødelagt når siden blir lukket...

8545124[/snapback]

 

Det er bare 1 stk erlikhetstegn, derfor vil alltid $_SESSION['innlogget'] bli tilegnet verdien true, og derfor er hele if () true, og den biten blir kjort.

Lenke til kommentar

Har beholdt scriptet slik det var. Fiksa litt mer på det, men jeg har et problem.

 

Jeg får ikke:

if ($_SESSION['innlogget'] == TRUE);

 

Hidden.php

<?
if ($_SESSION['innlogget'] == TRUE);
$tilgang = '1';

if ($_SESSION['innlogget'] !== TRUE);
$tilgang = '0';

if ($tilgang == '0');
{
echo "Hva faen gjør du inne her?! <br />";
echo "$tilgang";
echo "<a href='login2.php'>Logg inn på nytt </a> ";
exit;
}

if ($tilgang == '1')
{
echo "
<form action='' method='post'>
<input type='submit' name='Loggav' value='Logg av' >
</form> ";
if ( isset ( $_POST['Loggav'] ) )
{
unset( $_SESSION['innlogget'] );
echo "Du har nå logget ut";
echo "<a href='login2.php'>Logg inn på nytt </a> ";
}
}
?>

Lenke til kommentar

Fiksa litt på scriptet :D

 

PHP
<?

if ($_SESSION['innlogget'] == TRUE)

{

 $tilgang '1';

} else {

 $tilgang '0';

}

 

if ($tilgang == '0')

{

 echo "Hva faen gjør du inne her?! <br />";

 echo "$tilgang";

 echo "<a href='login2.php'>Logg inn på nytt </a> ";

 exit;

}

 

if ($tilgang == '1')

{

 echo "

 <form action='' method='post'>

 <input type='submit' name='Loggav' value='Logg av' >

 </form> ";

if ( isset ( $_POST['Loggav'] ) )

{

 unset( $_SESSION['innlogget'] );

 echo "Du har nå logget ut";

 echo "<a href='login2.php'>Logg inn på nytt </a> ";

}

}

?>

Endret av mhbakke
Lenke til kommentar

Klikk for å se/fjerne innholdet nedenfor
Funnet en enkel metode!

 

Login2.php

<?php
session_start();
echo "
<html>
<head><title>Logg inn</title></head>
<body>
<table>
<form action='nextpage2.php' method='post'>
<tr><td>Brukernavn:<td><input type='text' name='username' value=''>
<tr><td>Passord:<td><input type='password' name='password' value=''>
<tr><td align='center' colspan='2'><input type='submit' name='submit_login' value='Logg inn'>
</form>
</body>
</html>
";
?>

 

Nextpage2.php

<?
$user = "admin";
$passwd = "admin";
$hiddenpage = 'hidden.php';

// spiller ikke stor rolle om passordet er klartekst. kilden vil ikke være synlig med mindre php modulen til serveren crasher

session_start();

// behandle innlogging
{
if(isset($_POST['submit_login']))
{
if($_POST['password'] == $passwd && $_POST['username'] == $user)
header("Location: $hiddenpage");
}
{
if($_POST['password'] !== $passwd && $_POST['username'] !== $user)
  {
  if(!$logg = fopen("logg.txt","a"))
  {
   die("Kunne ikke åpne loggfil...");
  }
  	$usernametext = $_POST['username'];
  	$passwordtext = $_POST['password'];
  $text = $usernametext . " - " . $passwordtext . " " . "\n";

  if(!fwrite($logg,$text))
  {
   die("Kunne ikke skrive til loggfil...");
  }

  fclose($logg);
  }
  
echo "Feil passord og/eller brukernavn";
}
}
?>

 

Funker knuskefritt!

 

:) :) :)

8543043[/snapback]

 

Vis det er scriptet du bruker, kan ikke jeg se at du setter $_SESSION['innlogget'] = true...

Lenke til kommentar

Nå gir jeg snart opp!

 

Login2.php

<?php
session_start();
echo "
<html>
<head><title>Logg inn</title></head>
<body>
<table>
<form action='nextpage2.php' method='post'>
<tr><td>Brukernavn:<td><input type='text' name='username' value=''>
<tr><td>Passord:<td><input type='password' name='password' value=''>
<tr><td align='center' colspan='2'><input type='submit' name='submit_login' value='Logg inn'>
</form>
</body>
</html>
";
?>

 

Nextpage2.php

<?php
$user = "admin"; // Brukernavn
$passwd = "admin"; //passord
$hiddenpage = 'hidden.php'; //Siden brukeren blir sendt vidre til hvis passord og brukernavn er riktig

if($_POST['password'] == $passwd && $_POST['username'] == $user)
   {
$_SESSION['innlogget'] = '1';
Header( "Location: $hiddenpage" ); //Sender brukeren vidre til hiddenpage
exit; //Lukker scriptet
   }
{
if(isset($_POST['submit_login']))
if($_POST['password'] !== $passwd && $_POST['username'] !== $user)
   {
$_SESSION['innlogget'] = '0';
    if( ! $logg = fopen ( "logg.txt", "a" ) ) 
       {
       die ( "Kunne ikke åpne loggfil..." );
       }
   $text = "{$username} - {$password}\n";
   if( ! fwrite ( $logg, $text ) ) 
       {        
       die ( "Kunne ikke skrive til loggfil...");
       }
   fclose ( $logg );
   echo ( "Feil passord og/eller brukernavn");
   }
}
if(!isset($_POST['submit_login']))
   {
echo "Suuperlool";
   exit;
}	
?>

 

Hidden.php

<?php
if ($_SESSION['innlogget'] == '1')
{
$tilgang = '1';
} else {
$tilgang = '0';
}

if ($tilgang == '0')
{
echo "Hva faen gjør du inne her?! <br />";
echo "$tilgang";
echo "<a href='login2.php'>Logg inn på nytt </a> ";
exit;
}

if ($tilgang == '1')
{
echo "
<form action='' method='post'>
<input type='submit' name='Loggav' value='Logg av' >
</form> ";
if ( isset ( $_POST['Loggav'] ) )
{
unset( $_SESSION['innlogget'] );
echo "Du har nå logget ut";
echo "<a href='login2.php'>Logg inn på nytt </a> ";
}
}
?>

Endret av TheClown
Lenke til kommentar

Helt utrolig hvilke underverker session_start() gjør ;)

Denne må plasseres i ALLE sider som skal benytte seg av superglobalen $_SESSION. Eneste plassen du hadde det, var i fila som ikke trengte det.

 

Du kjører også en ekstra if, istede for å bruke else der den kan brukes.

 

nextpage2.php

<?php
session_start();
$user = "admin"; // Brukernavn
$passwd = "admin"; //passord
$hiddenpage = 'hidden.php'; //Siden brukeren blir sendt vidre til hvis passord og brukernavn er riktig

if(isset($_POST['submit_login'])) // Kjør denne først, så man får sjekket at brukeren faktisk har prøvd å logge inn
{
if($_POST['password'] == $passwd && $_POST['username'] == $user)
{
 $_SESSION['innlogget'] = 1; // Bruke 1 er mye enklere enn '1'. Da 1 representerer TRUE.
 header( "Location: $hiddenpage" ); //Sender brukeren vidre til hiddenpage
 exit; //Lukker scriptet
}
//if($_POST['password'] !== $passwd && $_POST['username'] !== $user) * Denne byttes med "else"
else
{
 $_SESSION['innlogget'] = 0; // 0 = FALSE
 if( ! $logg = fopen ( "logg.txt", "a" ) )
 {
 	die ( "Kunne ikke åpne loggfil..." );
 }
 $text = "{$username} - {$password}\n";
 if( ! fwrite ( $logg, $text ) )
 {
 	die ( "Kunne ikke skrive til loggfil...");
 }
 fclose ( $logg );
 echo ( "Feil passord og/eller brukernavn");
}
}
//if(!isset($_POST['submit_login'])) * Denne byttes også med else
else
{
echo "Suuperlool";
exit;
}
?>

Istede for å gi $_SESSION['innlogget'] en nummerisk verdi, gi vi den heller en bolsk (TRUE/FALSE). Dette drar vi nytte av siden.

 

hidden.php

<?php
session_start();
/*if ($_SESSION['innlogget'] == 0)
{
$tilgang = 1;
} else {
$tilgang = 0;
}*/

// Mye enklere slik, en slik du gjorde over. 
$tilgang = $_SESSION['innlogget'] ? 1 : 0; 

if ($tilgang == 0)
{
echo "Hva faen gjør du inne her?! <br />";
echo "{$tilgang}<br />";
echo "<a href='index.php'>Logg inn på nytt </a> ";
exit;
}
//if ($tilgang == 1) * Byttes også med "else"
else
{
echo "<form action='' method='post'>
<input type='submit' name='loggav' value='Logg av' >
</form> ";
}

if ( isset ( $_POST['loggav'] ) )
{
unset( $_SESSION['innlogget'] );

echo "Du har nå logget ut";
echo "<a href='login2.php'>Logg inn på nytt </a> ";
}
print_r ( $_SESSION );
?>

I denne filen bruker jeg noe du kanskje aldri har vært borti.

$tilgang = $_SESSION['innlogget'] ? 1 : 0; 

Denne kan enkelt forklares slik

$var = TRUE ? TRUE : FALSE

Om første TRUE er TRUE (noe den åpenbart er) blir $var TRUE. Om TRUE mot formodning ikke skulle være TRUE, blir $var FALSE.

Om $_SESSION['innlogget'] er TRUE, blir også $tilgang TRUE, og motsatt.

Kunne også skrevet

$tilgang = $_SESSION['innlogget'];

Men det lærer man jo ikke noe av.

 

Du hadde også noen feilplasserte { og }.

{} brukkes i blokker ( flere funksjoner som skal gjøres om noe stemmer).

PHP
<?php

 

$var "123"

 

if ( $var == "123" )

//Her er den. Etter if, ikke før

 

echo '$var er ' $var// "$var er 123"

 

//Ferdig med første blokken

 

else // ifspørringen stemte ikke

 

{

echo '$var er ikke ' $var// "$var er ikke 123"

 

//og der var vi ferdig

?>

Lenke til kommentar

Funker helt perfekt nå :)

 

Her er det ferdige scriptet (veit dette med if'ene og {}'ene. Men det funker :) )

 

Login.php

<?php
session_start();
echo "
<html>
<head><title>Logg inn</title></head>
<body>
<table>
<form action='nextpage2.php' method='post'>
<tr><td>Brukernavn:<td><input type='text' name='username' value=''>
<tr><td>Passord:<td><input type='password' name='password' value=''>
<tr><td align='center' colspan='2'><input type='submit' name='submit_login' value='Logg inn'>
</form>
</body>
</html>
";
?>

 

Nextpage2.php

<?php
$user = ''; // Brukernavn
$passwd = ''; //passord
$hiddenpage = ''; //Siden brukeren blir sendt vidre til hvis passord og brukernavn er riktig
session_start();


if(isset($_POST['submit_login']))
{
   if($_POST['password'] == $passwd && $_POST['username'] == $user)
       {
       $_SESSION['innlogget'] = TRUE;
            if( ! $logg = fopen ( "logg112.txt", "a" ) ) 
           {
           die ( "Kunne ikke åpne loggfil..." );
           }
           $text = "Korrekt - Korrekt \n";
           if( ! fwrite ( $logg, $text ) ) 
           {        
           die ( "Kunne ikke skrive til loggfil...");
           }
       fclose ( $logg );
       Header( "Location: $hiddenpage" );
       exit;
       }
   if($_POST['password'] !== $passwd && $_POST['username'] !== $user)
   {
   $_SESSION['innlogget'] = FALSE;
    if( ! $logg = fopen ( "logg112.txt", "a" ) ) 
       {
       die ( "Kunne ikke åpne loggfil..." );
       }
   $text = "{$username} - {$password}\n";
   if( ! fwrite ( $logg, $text ) ) 
       {        
       die ( "Kunne ikke skrive til loggfil...");
       }
   fclose ( $logg );
   echo ( "Feil passord og/eller brukernavn");
   }
}
if(!isset($_POST['submit_login']))
{
   echo "Du har ikke tilgang her";
   exit;
}    
?>

 

Hidden.php

<?php
session_start();
if ($_SESSION['innlogget'] == TRUE)
{
$tilgang = '1';
} else {
$tilgang = '0';
}

if ($tilgang == '0')
{
echo "Du har ikke tilgang til denne siden <br />";
echo "<a href='login2.php'>Logg inn</a> ";
exit;
}

else
{
echo "
<form action='' method='post'>
<input type='submit' name='Loggav' value='Logg av' >
</form> ";
if ( isset ( $_POST['Loggav'] ) )
{
unset( $_SESSION['innlogget'] );
echo "<br />Du har nå logget ut <br />";
echo "<a href='login2.php'>Logg inn på nytt </a> ";
}
}
?>

Lenke til kommentar
Istede for å gi $_SESSION['innlogget'] en nummerisk verdi, gi vi den heller en bolsk (TRUE/FALSE). Dette drar vi nytte av siden.

8561899[/snapback]

1 == true (eller hvilket som helt annet tall)

0 == false

;)

 

*flytte rundt*

Endret av Ståle
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...