Gå til innhold

Trenger et PHP logon script


Anbefalte innlegg

Videoannonse
Annonse

<php
session_start();
if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') {
$_SESSION['brukernavn'] = $_POST['bnavn'];
} else {
echo 'feil brukernavn og passord';
exit();
}
if (isset($_SESSION['brukernavn'])) {
// logget på
} else {
echo 'du har ikke tilgang til denne siden';
exit();
}
?>

 

Så lager du en form:

 

<form method="post" action="check.php">
<input type="text" name="bnavn" />
<input type="password" name="pass" />
</form>

 

Legg phpkoden i check.php så skal det gå bra :)

Lenke til kommentar
<php
session_start();
if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') {
$_SESSION['brukernavn'] = $_POST['bnavn'];
} else {
echo 'feil brukernavn og passord';
exit();
}
if (isset($_SESSION['brukernavn'])) {
// logget på
} else {
echo 'du har ikke tilgang til denne siden';
exit();
}
?>

oops..leste scriptet litt feil jeg... :blush:

 

Men uansett så sjekker jo scriptet bare om det finnes noe i session-variablen,

så det er jo bare å skrive noe så kommer du inn uansett.

Må kanskje sjekke opp i mot mysql eller en flatfil..?

Endret av hm87
Lenke til kommentar

Men uansett så sjekker jo scriptet bare om det finnes noe i session-variablen,

så det er jo bare å skrive noe så kommer du inn uansett.

Må kanskje sjekke opp i mot mysql eller en flatfil..?

 

Jo men sessionvariabelen blir ikke satt om bnanv og pass ikke er rett. Her bli passordet hardkoda, jeg vet jo ikke om Solar bruker flatfiles eller en db :roll:

Lenke til kommentar

Men uansett så sjekker jo scriptet bare om det finnes noe i session-variablen,

så det er jo bare å skrive noe så kommer du inn uansett.

Må kanskje sjekke opp i mot mysql eller en flatfil..?

 

Jo men sessionvariabelen blir ikke satt om bnanv og pass ikke er rett. Her bli passordet hardkoda, jeg vet jo ikke om Solar bruker flatfiles eller en db :roll:

Den sjekker jo bare om noe er skrevet inn, ikke om brukernavnet

og passordet finnes i flatfil eller en database..

 

Har du tenkt å bruke flatfil eller mysql forresten Solar?

Lenke til kommentar

Noe jeg hadde liggende:

 

Login.php

<?php
if ($_POST['submit-pass'] ) {

if ($_POST['brukernavn'] ) {
$brukernavn = $_POST['brukernavn'];
} else {
$brukernavn = FALSE;
$melding = "Du må fylle ut brukernavnet<br>";
}

if ($_POST['passord'] ) {
$passord = $_POST['passord'];
} else {
$passord = FALSE;
$melding .= "Du må fylle ut passordet<br>";
}

if ($brukernavn && $passord) {

include("mysql.php");

$query ="SELECT passord, fornavn, brukernavn, level, bruker_id FROM brukere WHERE brukernavn='$brukernavn' AND passord=PASSWORD('$passord')"; 
$result = @mysql_query ($query);
$row = mysql_fetch_array ($result, MYSQL_NUM);

if ($row) {

$query = "SELECT aktivert FROM brukere WHERE aktivert = '1' AND brukernavn = '$brukernavn'";
$result = @mysql_query ($query);
if (mysql_num_rows($result) == 1) {

$_SESSION['passord'] = $row[0];
$_SESSION['fornavn'] = $row[1];
$_SESSION['brukernavn'] = $row[2];
$_SESSION['level'] = $row[3];
$_SESSION['bruker_id'] = $row[4];	

ob_end_clean();
header("Location: index.php?side=brukere/index");
exit();

 	} else {

 	echo "Brukeren er ikke aktivert"; }

 } else { echo "Brukenavnet og passordet ble ikke funnet i databasen"; }

} else {

echo "$melding";

}

} else { // Submit sjekk

echo "Du kommer fra feil side";

}

?>

 

Sikkerhets_sjekk.php

<?php

include('mysql.php');

//Variabler
$sjekk_brukernavn = $_SESSION['brukernavn'];
$sjekk_passord = $_SESSION['passord'];
$sjekk_bruker_id = $_SESSION['bruker_id'];
$sjekk_bruker_level = $_SESSION['bruker_id'];

//spørring for å sjekke om brukerinfoen er lik i session-fila og databasen!
$spørring = "SELECT brukernavn, bruker_id, passord, bruker_level FROM brukere WHERE brukernavn = 'sjekk_brukernavn'
AND bruker_id = 'sjekk_bruker_id' AND passord = 'sjekk_passord' AND bruker_level = '$sjekk_bruker_level'";
$resultat = @mysql_query($spørring);

if($resultat) {

$row = mysql_fetch_array($resultat, MYSQL_NUM);
$sikkerhets_bruker_level = $row[3];

$sikkerhets_klarert = "Good_to_go!";

} else {

$sikkerhets_klarert = FALSE;

}

?>

 

 

Topp på sider

<?php
include('sikkerhets_sjekk.php');
$side_sikkerthets_level = 3;
if($sikkerhets_klarert == "Good_to_go!") { 

if($sikkerhets_bruker_level >= $side_sikkerthets_level; { // Vis innholdet på sida


// eventuelt avslutte php
?>

 

Bunn av sider

//Hvis $sikkerhets_klarert ikke er rett, eller $sikkerhets_bruker_level matcher $side_sikkerthets_level:
<?php

} else { //Level sjekk

echo "<br><center><b>Du har ikke rikitg bruker-tilgang for denne siden!</b></center>";

}

} else { // bruker sjekk

echo "<br><center><b>Du må logge inn for å få tilgang til denne siden!</b></center>";

} 
?>

Endret av hm87
Lenke til kommentar

hm87:

 

Jeg sier jo at passordet og brukernavnet er hardkodet, at det ikke ligger en annen plass enn i .php fila, skjønner? Der det står:

if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') {

Mener jeg at man skal bytte ut 'dittbrukernavn' og 'pass' med det man vil ha, skjønner?

Han sa han ville logge seg inn, jeg ga han et basic logginnscript. :roll:

Lenke til kommentar

Det er jo minst like lett å komme inn en plass hvor passordene ligger i en .txtfil eller i en mysql database da :roll:

 

Nå er det heller ikke så farlig hva som står i sessionvariabelen, da den bare skjekker om den er satt, ikke hva som står i den og den blir bare satt om passordet og brukernavnet er rett.

Lenke til kommentar

Hvis noen skal komme inn som en annen bruker må han vite passordet til vedkommende, når det ligger i session..

Passordet er kryptert og det er vel litt verre å finne enn brukernavnet!

Også sjekkes det mot mysql om brukeren og passordet i det hele tatt finnes..

Den som prøver å komme seg inn som en annen bruker, må ihvertfall

jobbe litt for å komme inn da..

 

Du må faktisk lagre session'en eller noe før brukeren lukker vinduet..

Endret av hm87
Lenke til kommentar

Det smoothie gir er jo en helt vanlig tutoral-sjekke-måte.

Det funker til en viss grad.

 

Utrolig nok så er det faktiskt vanskeligere å hacke scriptet hans, en ett vanlig flatfiles-basert script.

 

Forøvrig så kan få gjøre noen spesiell skade hvis dem finner passordet, de kan jo bare se på andre sider.

Lenke til kommentar

Men skal han ha flere brukere funker ikke det der..

Dessuten sjekker scriptet hans om det finnes en verdi i $_SESSION['brukernavn']

Ikke om det matcher det brukernavnet som ligger hardkoda i scriptet..

den sjekker heller ikke passord, så det er bare å se på skjermen til en som logger inn og bare finne på et passord..

Lenke til kommentar

hm87: for å skrive smoothies kode litt annerledes:

check.php:

<?
session_start();
if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') {
 $_SESSION['brukernavn'] = $_POST['bnavn']; // denne blir kun satt dersom brukernavn og passord stemmer. 
 header("location: hemmelig.php");
} else {
echo 'feil brukernavn og passord';
}

hemmelig.php:

<?
session_start();
if (isset($_SESSION['brukernavn'])) { // Denne finnes kun dersom den er satt i check.php, altsåp dersom brukernavn og passord er riktig
// hemmelig innhold
} else {
echo 'du har ikke tilgang til denne siden';
exit();
}
?>

Akkurat hvilken verdi $_SESSION['brukernavn'] har, har ingenting å si, siden det kun blir sjekket om den er satt. Kunne satt $_SESSION['brukernavn'] = "tre-kåmma-åtte"; for den saks skyld. Men det kan være smart å la det være brukernavn, da dette kan brukes i siden han logger inn på. F.eks. i forbindelse med spørringer. Hvis han skal endre sine egne data, eller no.

 

/Kakkle

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

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