Gå til innhold

Problemer med login


Anbefalte innlegg

Videoannonse
Annonse

Uff, skal gjøre noe jeg ikke liker å gjøre, men dog.. Her er et eksempel.

 

Her hentes brukernavn og passord fra en flatfil i formatet "bruker|passord" på hver linje.

 

<?php 
session_start();

if (!isset($_SERVER['PHP_AUTH_USER'])) {
  header('WWW-Authenticate: Basic realm="Shootem up"');
  header('HTTP/1.0 401 Unauthorized');
  echo '<img src=/"http://www.ciboire.com/cartes/carte-61.jpg/">';
  exit;
 } else {  
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
if($_SESSION['loggedin'] != "yes"){
$lines = file("userdb.txt");
foreach($lines as $line){
  if(trim($line) == $user."|".$pass){
    $_SESSION['loggedin'] = "yes";
    $_SESSION['username'] = $_SERVER['PHP_AUTH_USER'];
    $_SESSION['LoginTime'] = time();
  }
}
}

if($_SESSION['loggedin'] != "yes"){
echo "<img src='http://www.ciboire.com/cartes/carte-61.jpg'>";
exit;
}
?>

 

 

Vær nå snill å bruk dette kun som eksempel, og lag ditt eget script!

Endret av Klette
Lenke til kommentar

PHP scripts kan ikke åpnes i en text editor, kun et eventuelt output (som html siden) kan åpnes.

 

Det finnes mange måter å lage et logginn script. Skal du ha et lite enkelt logginn script kan du bruke scriptet til Klette, men det er ikke det sikreste i verden :)

 

Skal du lage det tryggere legger du inn passordet (kryptert) og brukernavnet i en session og sjekker dette på hver side. Videre kan du implementere info om brukeren, som ip adresse ol., i sessionen for å passe på at brukeren virkelig er brukeren. Søk litt på forumet så finner du litt diskusjon om dette.

Lenke til kommentar

Eg har allerede et login script som fungerer, men eg må ha en eller annen kode i begynnelsen av hver av sidene som kun skal være tilgjengelige for medlemmer som er logget inn?

 

Og BTW; ser dere noe feil i denne login koden? får ikke logget inn...

 

 <?PHP 

if (!isset($_POST['username']) || !isset($_POST['password'])) { 
header( "Location: index.html" ); 
exit;
} 

elseif (empty($_POST['username']) || empty($_POST['password'])) { 
header( "Location: index.html" ); 
exit;
}  

$user = addslashes($_POST['username']); 
$pass = md5($_POST['password']); 

$dbHost = "127.0.0.1"; 
$dbUser = "root"; 
$dbPass = ""; 
$dbDatabase = "member"; 
$dbTabel = "login";

$db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database."); 

mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database."); 

$result = mysql_query("select * from $dbTabel where username='$user' AND password='$pass'", $db); 

$rowCheck = mysql_num_rows($result); 
if($rowCheck > 0){ 
while($row = mysql_fetch_array($result)){ 

 session_start(); 
 session_register('username'); 

header( "Location: members.php" ); 
 } 

 } 
 else { 

 echo 'Incorrect login name or password. Please try again.'; 
 } 
?> 

Endret av _TT_
Lenke til kommentar

Glem det, eg fannt ut av det.

 

Men den koden tidligere... den får en kompis av meg til å kjøre på sin server, men eg får bare feil hele tiden. Er det noen spesielle instillinger i php eller mysql den koden trenger?

Lenke til kommentar

Fannt også lignende feil ved registrering av bruker. En kan skrive inn samme brukernavn to ganger, uten at den programmet merker det, noe den er programmert til å gjøre da selfølgelig.

 

 <?php

$adresse = "127.0.0.1";
$brukernavn = "root";
$passord = "";
$dbnavn = "member";
$tabell = "login";

$user = addslashes($_POST['user']); 
$pass = md5($_POST['pass']); 

$connect = mysql_connect ("$adresse", "$brukernavn", "$passord") or die ("Her dør vi i oppkoblinga");
$sjekk = "select * from $tabell WHERE username='$user'"; 
$sjekk2 = mysql_db_query ($dbnavn, $sjekk, $connect);

$rowCheck = mysql_num_rows($sjekk2); 
if($rowCheck > 0){  
echo "Brukernavnet finnes";
exit;
}

$action = "INSERT into $tabell values ('0', '$user', '$pass')";

if (mysql_db_query ($dbnavn, $action, $connect)) {
header( "Location: index.html" ); 
  exit;
 }else{ print("En feil oppstod under registrering. Vennligst prøv på nytt senere.\n"); }
mysql_close ($connect);


?> 

Lenke til kommentar

Først av alt, ikke bruk mysql_db_query:

"This function has been deprecated since PHP 4.0.6. Do not use this function." - fra manualen.

 

Edit: bruk mysql_connect, mysql_select_db og mysql_query

 

Hvis du vil passe på at ikke to brukernavn er like, så gjør feltet unikt:

ALTER TABLE `tabellnavn` ADD UNIQUE (brukernavn)

Da er det ikke mulig å sette inn to like verdier.

 

Ta en kikk på:

http://www.mysqlfreaks.com/mysql_errors.php

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