Gå til innhold

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


Anbefalte innlegg

Skrevet

Heisann. Rota litt rundt i login-scripts som jeg fant her. Likte den ene veldig godt og hadde tenkt til å bruke den på siden min. MEN!

  • Jeg vil gjøre slik at hver login-forsøk blir lagret i en .txt fil (både brukernavn og passord)
  • Jeg vil ha en link på "hidden.php" som gjør slik at du logger ut og kommer tilbake til login.php

<?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(!strcmp($passwd, $_POST['password']) && !strcmp($user, $_POST['username'])) $_SESSION['innlogget'] = true;
header("Location: ".$_SERVER['PHP_SELF']);
}

// hvis ikke innlogget, logge inn
if(!isset($_SESSION['innlogget']))
{
echo "
<html>
<head><title>Logg inn</title></head>
<body>
<table>
<form action='' 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>
";

// hvis innlogget, vis skjult side
} else {

include($hiddenpage);

}
?>

 

Åpne + skrive ideen min (gikk til helvette)

 

$teller = ("logg.txt"); 
//her finner vi filen og opner den 
$besokende = file($teller); 
//her opner vi telleren 
$ny = fopen($teller , "w"); 
//her forteller vi telleren om den nye besøkende 
fputs($ny , $_POST['username'] && $_POST['password']); 
//lukker filen 
fclose($ny);

 

Tatt fra et telle-script, har bare gjort om fputs($ny , $_POST['username'] && $_POST['password']); . Men logg.txt blir tom, og det skrives ingenting i den.

 

login.php

hidden.php

logg.txt

 

Håper på like godt svar her som det jeg har fått i de andre trådene!

 

På forhånd, takk!

Videoannonse
Annonse
Skrevet
Jeg vil gjøre slik at hver login-forsøk blir lagret i en .txt fil (både brukernavn og passord)

8541454[/snapback]

 

Hei, har ikkje tid til å se igjennom skripet ditt no, vil bare påpeike at å lagre alle forsøk til ei .txt fil er veldig farleg. Det er ikkje veldig vanskelig å finne fila og dermed få tilgang.

Skrevet (endret)

Idè til å logge innloggings forsøk (selv om det er farlig):

PHP
<?php

 

$user 'admin';

$passwd 'admin';

$hiddenpage 'hidden.php';

 

if(!$logg fopen("logg.txt","a"))

{

 die("Kunne ikke åpne loggfil...");

}

 

$text $user " - " $passwd "";

 

if(!fwrite($logg,$text))

{

 die("Kunne ikke skrive til loggfil...");

}

 

fclose($logg);

?>

Endret av mhbakke
Skrevet (endret)

Nå skjønner jeg ikke helt. Poenget er at teksten som brukeren fyller inn i:

 

<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'>

 

Skal lagres der. . .

 

Er det mulig å skjule de som er riktig?

 

{ if $_POST['username'] == "admin"

{if $_POST['passord'] == "admin"

die() }

}

 

eller noe i den dur?

 

JEG ER VELDIG NOOB. . . :p

Endret av TheClown
Skrevet (endret)

de er jo skjult, for brukeren. Men hvis PHP modulen ikke blir loadet, vil hele kildekoden vises.

 

du kan bruke md5() eller sha1() til a hashe passordet ditt. Det er en enveis hash, sa folk som far tak i den, far allivell ikke komme inn p siden din.

 

 

lim inn det du far ut av sha1('admin'); inn der hvor du na har brukernavn/passord

{ if $_POST['username'] == "*her*"

 

sa nar du sjekker om de har brukt riktig passord:

if(!strcmp($passwd, sha1($_POST['password']) ... osv

 

edit; du kunne jo lagre de passordene og brukernavnene som ble brukt hvis personen _ikke_ klarte a logge inn ;)

Mer sikkerhet, men allikevell ikke sa smart. Database kanskje.

Endret av Ståle
Skrevet (endret)

Hvis noen prøver å logge inn, f.eks en hacker. Som prøver mange forskjellige kombinasjoner med passord og brukernavn. Alle disse er feil og brukernavnene og passordene han skreiv blir listet opp i en tekstfil som jeg har laget.

 

Men hvis jeg prøver å logge inn på siden og skriver både riktig passord og riktig brukernavn skives ingenting til tekstfila.

 

Noen?

Endret av TheClown
Skrevet (endret)

PHP
<?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(!strcmp($passwd$_POST['password']) && !strcmp($user$_POST['username'])) $_SESSION['innlogget'] = true;

header("Location: ".$_SERVER['PHP_SELF']);

} else {

if(!$logg fopen("logg.txt","a"))

{

 die("Kunne ikke åpne loggfil...");

}

 

$text $_POST['username'] . " - " $_POST['password'] . " ";

 

if(!fwrite($logg,$text))

{

 die("Kunne ikke skrive til loggfil...");

}

 

fclose($logg);

}

 

// hvis ikke innlogget, logge inn

if(!isset($_SESSION['innlogget']))

{

echo "

<html>

<head><title>Logg inn</title></head>

<body>

<table>

<form action='' 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>

";

 

// hvis innlogget, vis skjult side

} else {

 

include($hiddenpage);

 

}

?>

 

Noe sånt? Vis login feiler blir brukernavn og passord lagret i loggen...

Endret av mhbakke
Skrevet (endret)

Nei, nå lagrer den passord og brukernavn (de rette) hver gang noen prøver å loge inn . . .

 

Jeg tenkte på noe slikt:

 

$usertext = $_POST['username'];

$passordtext = $_POST['password'];

 

Men da blir .txt fila bare:

 

-

Endret av TheClown
Skrevet

Jeg som tenkte feil :blush: Har oppdatert scriptet slik at den lagrer brukernavn og passord som brukeren skriver inn, dersom login feiler.

Skrevet

Jo?

$username = $_POST['username'];
echo "Brukernavn: $username";

 

Men det kan og gjøres slik:

echo "Brukernavn: ".$_POST['username']."";

Skrevet

Har prøvd det, kan linke deg reultatet straks.

 

Har gjort om litt på scriptet, men har problemer med å forstå hva denne linja her egentlig sier:

 

if(!strcmp($passwd, $_POST['password']) && !strcmp($user, $_POST['username'])) $_SESSION['innlogget'] = true;

Skrevet (endret)

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!

 

:) :) :)

Endret av TheClown
Skrevet
Jo?

$username = $_POST['username'];
echo "Brukernavn: $username";

 

Men det kan og gjøres slik:

echo "Brukernavn: ".$_POST['username']."";

8543011[/snapback]

 

Eller, som ogsa er en pagaende diskusjon,

 

 echo "Brukernavn: {$_POST['username']}

:roll:

Skrevet

Men folkens! Nå trenger jeg hjelp til logav-script :) bassert på det jeg har skrevet ovenfor. Linken/knappen skal være på hidden.phh :)

Skrevet

Du har fortsatt noen feilplasserte {, og noen unødvendige if'er.

Og ikke minst, short-tags ( <? ).

 

 

<? //Shorttags er djevelens verk. Bruk <?php
session_start();

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


if ( isset ( $_POST['submit_login'] ) )
{
$username = $_POST['username'];
$password = $_POST['password']
if($password == $passwd && $username == $user)
{
 header ( "Location: $hiddenpage" );
 exit; 
 //Bruk alltid exit etter du har sendt en
 // header Location eller Refresh
}
else
{
 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 );
 die ( "Feil passord og/eller brukernavn";
}
}
else
{
header ( "Location: Login2.php" ); 
exit;
}

?>

 

Skrevet

<?
echo "
<input type='submit' name='Loggav' value='Logg av' action='login2.php' method='post'>
</form> ";

if(isset($_POST['Loggav']))
{
unset( $_SESSION['innlogget'] );
}
?>

 

Funker ikke, hva er feil?

Skrevet

Du setter aldri $_SESSION['innlogget'] i Nextpage2.php.

 

Legg til $_SESSION['innlogget'] = TRUE; rett før header("Location: $hiddenpage");.

 

Sjekker du i hidden.php om $_SESSION['innlogget'] er satt til TRUE? Om du ikke gjør det er hele loginformen totalt unødvendig, da hvemsomhelst har tilgang til den siden uansett.

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