Gå til innhold

Login script - Tips?


Anbefalte innlegg

Hei , holder på å lage et login script til siden.

Login scriptet funker perfekt, men lurer på om det er noe jeg burde skifte?

Merk! Jeg skal ikke ha md5 kryptering på passord fordi at det er ingen vits i forhold til hva som er på siden.

 

Jeg er helt ny i å bruke sessions, så er dette lurt å bruke ? Tenker på å ha de sessionene hvis brukeren skal gå rundt på siden og fortsatt bruke login beskyttete script.

Jeg bruker disse sessionene:

$_SESSION['loggetinn'] = 1; // Her lager vi en variabel for at brukeren er logget inn.

$_SESSION['brukernavn'] = $brukernavn; // Dette husker hvilket brukernavn som er logget inn

$_SESSION['passord'] = $passord; // Husker passord som er logget inn

$_SESSION['rettighet'] = $rettighet ; //Husker rettighetene til brukeren.

 

 

 

Her er koden:

//Kategori - admin
case LoggInn:
$access = $_GET["access"];
switch ($access){
default:
echo "
<form action='index.php?kategori=LoggInn&access=login' method='POST'>
<center>
Brukernavn: <input name='brukernavn' type='text'><br />
Passord: <input name='passord' type='password'><br />
<input type='submit' value='Logg Inn'>
</center>
</form>
";
break;
case login:
function feil_brukernavnpassord(){
echo "<p>Brukernavn / Passord var feil! Prøv igjen ved å klikke <a href='index.php?kategori=LoggInn'> HER</a></p>";
}
$brukernavn = $_POST['brukernavn'];
$passord = $_POST['passord'];
$query = mysql_query("SELECT * FROM brukere WHERE brukernavn='$brukernavn' AND passord='$passord'");
while ($data = mysql_fetch_array($query)) {
$riktigpassord = $data['passord'];
$riktigbrukernavn = $data['brukernavn'];
$rettighet = $data['rettighet'];
}
if($brukernavn == $riktigbrukernavn){
if ($passord == $riktigpassord){
 echo "RIKTIG! Du er nå loggget in man!";
$_SESSION['loggetinn'] = 1;
$_SESSION['brukernavn'] = $brukernavn;
$_SESSION['passord'] = $passord;
$_SESSION['rettighet'] = $rettighet;



HER GÅR ALT DATA SOM ER BESKYTTET MED BRUKERNAVN OG PASSORD!


}




}else {
feil_brukernavnpassord();
$loggetinn=0;
}
} else{
feil_brukernavnpassord();
$loggetinn=0;
}
break;
}


//Kategori - admin - Slutt

Lenke til kommentar
Videoannonse
Annonse

Ser forsåvidt greit ut, litt vanskelig å lese uten å ha "indents"... :p

Hvorfor har du en funksjon for "feil_brukernavnpassord()" og hvorfor har du den inni switch/case?

 

$feil_brukernavnpassord = "<p>Brukernavn / Passord var feil! Prøv igjen ved å klikke <a href='index.php?kategori=LoggInn'> HER</a></p>";

 

echo $feil-brukernavnpassord;

 

;)

Lenke til kommentar
Hei , holder på å lage et login script til siden.

Login scriptet funker perfekt, men lurer på om det er noe jeg burde skifte?

Merk! Jeg skal ikke ha md5 kryptering på passord fordi at det er ingen vits i forhold til hva som er på siden.

 

Jeg er helt ny i å bruke sessions, så er dette lurt å bruke ? Tenker på å ha de sessionene hvis brukeren skal gå rundt på siden og fortsatt bruke login beskyttete script.

Jeg bruker disse sessionene:

$_SESSION['loggetinn'] = 1; // Her lager vi en variabel for at brukeren er logget inn.

$_SESSION['brukernavn'] = $brukernavn; // Dette husker hvilket brukernavn som er logget inn

$_SESSION['passord'] = $passord; // Husker passord som er logget inn

$_SESSION['rettighet'] = $rettighet ; //Husker rettighetene til brukeren.

 

 

 

Her er koden:

//Kategori - admin
case LoggInn:
$access = $_GET["access"];
switch ($access){
default:
echo "
<form action='index.php?kategori=LoggInn&access=login' method='POST'>
<center>
Brukernavn: <input name='brukernavn' type='text'><br />
Passord: <input name='passord' type='password'><br />
<input type='submit' value='Logg Inn'>
</center>
</form>
";
break;
case login:
function feil_brukernavnpassord(){
echo "<p>Brukernavn / Passord var feil! Prøv igjen ved å klikke <a href='index.php?kategori=LoggInn'> HER</a></p>";
}
$brukernavn = $_POST['brukernavn'];
$passord = $_POST['passord'];
$query = mysql_query("SELECT * FROM brukere WHERE brukernavn='$brukernavn' AND passord='$passord'");
while ($data = mysql_fetch_array($query)) {
$riktigpassord = $data['passord'];
$riktigbrukernavn = $data['brukernavn'];
$rettighet = $data['rettighet'];
}
if($brukernavn == $riktigbrukernavn){
if ($passord == $riktigpassord){
 echo "RIKTIG! Du er nå loggget in man!";
$_SESSION['loggetinn'] = 1;
$_SESSION['brukernavn'] = $brukernavn;
$_SESSION['passord'] = $passord;
$_SESSION['rettighet'] = $rettighet;



HER GÅR ALT DATA SOM ER BESKYTTET MED BRUKERNAVN OG PASSORD!


}




}else {
feil_brukernavnpassord();
$loggetinn=0;
}
} else{
feil_brukernavnpassord();
$loggetinn=0;
}
break;
}


//Kategori - admin - Slutt

7989960[/snapback]

 

Du må escape variablene dine før du sender de til mysql, funksjonen for feil passord bør du definere på utsiden av switchen din.

Jeg ville gjort noe slikt som dette:

<?php
$access = isset($_GET["access"]) ? $_GET['access'] : "";

switch ($access){
case 'login':
$brukernavn = mysql_real_escape_string(trim($_POST['brukernavn']));
$passord = mysql_real_escape_string(trim($_POST['passord']));
$query = mysql_query("SELECT * FROM brukere WHERE brukernavn='$brukernavn' AND passord='$passord'");
if ($data = mysql_fetch_array($query) == 1) {
 $_SESSION['loggetinn'] = 1;
 $_SESSION['brukernavn'] = $data['brukernavn'];
 $_SESSION['passord'] = $data['passord'];
 $_SESSION['rettighet'] = $data['rettighet'];
 echo "RIKTIG! Du er nå loggget in man!";
}else{
 feil_brukernavnpassord();
}
break;
default:
echo "
<form action='index.php?kategori=LoggInn&access=login' method='POST'>
<center>
Brukernavn: <input name='brukernavn' type='text'><br />
Passord: <input name='passord' type='password'><br />
<input type='submit' value='Logg Inn'>
</center>
</form>
";
}
function feil_brukernavnpassord(){
echo "<p>Brukernavn / Passord var feil! Prøv igjen ved å klikke <a href='index.php?kategori=LoggInn'> HER</a></p>";
}
?>

Lenke til kommentar

Takker for nyttige tips! Skal prøve meg litt frem,

grunnen til at jeg hadde funksjonen var at jeg måtte prøve funksjoner, første gang jeg har tatt i bruk en funksjon ;)

 

Men ja et lite spørsmål,

Jeg har laget et script som jeg bruker for å få pages som Sier til data basen:

 

LIMIT $fra, $til

 

Når jeg lager en funksjon for denne side greien,

 

function lag_sider(){

Side scriptet går her og definerer

f.eks.

$fra = 0

$til = 4

}

 

 

//Tar for meg gjesteboken som et eksempel

case gjestebok:

lagsider();

$query = ("SELECT * FROM gjestebok LIMIT $fra, $til");

while ($data = mysql_fetch_array($query)){

Her skriver man ut inlegg da..

}

 

 

Nå skulle jo side funksjonen fungere, men den fungerer BARE hvis jeg ikke har funksjon. Er det noe jeg må gjøre for å skrive en variabel ut fra en funksjon?

Lenke til kommentar
Takker for nyttige tips! Skal prøve meg litt frem,

grunnen til at jeg hadde funksjonen  var at jeg måtte prøve funksjoner, første gang jeg har tatt i bruk en funksjon ;)

 

Men ja et lite spørsmål,

Jeg har laget et script som jeg bruker for å få pages som Sier til data basen:

 

LIMIT $fra, $til

 

Når jeg lager en funksjon for denne side greien,

 

function lag_sider(){

Side scriptet går her og definerer

f.eks.

$fra = 0

$til = 4

}

 

 

//Tar for meg gjesteboken som et eksempel

case gjestebok:

lagsider();

$query = ("SELECT * FROM gjestebok LIMIT $fra, $til");

while ($data = mysql_fetch_array($query)){

Her skriver man ut inlegg da..

}

 

 

Nå skulle jo side funksjonen fungere, men den fungerer BARE hvis jeg ikke har funksjon. Er det noe jeg må gjøre for å skrive en variabel ut fra en funksjon?

7990284[/snapback]

 

Det du må ta hensyn til her er scope av variabler. En variabel definert inni en funksjon gjelder bare inni den funksjonen, slik at $fra, $til slik du har skrevet det her gjelder bare inni lagsider();

 

Det finnes flere løsninger på det. Enten å bruke globale variabler, noe jeg vil anse som svært tungvindt, elelr du kan legge queryen din inni funksjonen og sende med $fra, $til som parameter.

 

$fra = 0;
$til = 4; (/ egentlig antall pr side

function lagside(){
global $fra, $til;
$fra = $til +1;
}
// spørringen din med bruk av $fra, $til

Slik jeg ville gjort det ville jeg brukt $fra, $til som parameter

function lagside($fra, $til){
$limit = "LIMIT $fra, $til";
$query = ("SELECT * FROM gjestebok $limit ");
while ($data = mysql_fetch_array($query)){
// skriv ut data eller whatever
}
}

 

Da kan du kalle den slik


$fra = is_numeric($_GET['fra']) ? $_GET['fra'] : die("ugyldig fraverdi");
$antall = 4;
lagside($fra, $antall);
print "<a href=\"index.php?fra=".$antall+1."\">neste</a>";

Dette forutsetter at du sender fra og til vha lenker, eks index.php?fra=100

 

Noe slikt.

Lenke til kommentar
  • 2 uker senere...
Hvis jeg vil bruke den koden du har der til en side jeg holder på med, hvor skal sette inn koden? Er det det samme? Kan jeg bare sette den helt nederst på kode siden?

8067127[/snapback]

 

tror du må ha funksjonen helt øverst. eller i hvert fall før du bruker den. mener nemlig at jeg fikk en sånn fant-ingen-funksjon-med-det-navnet en gang når jeg prøvde å legge funksjonene ryddig nederst for seg selv :)

 

nå har jeg alle funksjoner i en egen pho fil, og så bruker require_once("funksjoner.php"); i starten av fila jeg skal bruke funksjonen :)

Endret av Tussi_qwerty
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...