Avatar billede nightshad Nybegynder
14. september 2003 - 14:43 Der er 14 kommentarer

Login med MySQL og Sessions

Hej.
jeg har lavet en login som er her:
<?
//Session
session_start();
//MySQL database con.
mysql_connect("X.X.X", "X_X", "X") or die (mysql_error());
mysql_select_db("psychos_dk") or die (mysql_error()); 
//Tjekker om man kommer fra en side hvor der er blevet submit
if(!isset($_POST['Submit'])) {
header("Location: login.php?fejl=side");
exit;
}
//Tjekker om det er rigtigt
$brugernavn = $HTTP_POST_VARS[brugernavn];
$password = $HTTP_POST_VARS[password];
$resultat = mysql_query("SELECT * FROM bruger WHERE brugernavn = '$brugernavn' AND password = '$password'"); 
//Antal Numre
$number = mysql_num_rows($resultat);
if($number != '1') {
header("Location: login.php?fejl=login");
exit; 
} elseif ($number == '1') {
$row = mysql_fetch_array($resultat) or die(mysql_error());
$id = $row[id];
session_register("id");
$_SESSION['login'] = "1";
$_SESSION['rang'] = $row[id];
if ($row[rang] == 'admin') {
mysql_query("UPDATE bruger SET online = online + 1 WHERE id='".$row[id]."'");
header("Location: admin/adminindex.php");
} elseif ($row[rang]== 'bruger') {
mysql_query("UPDATE bruger SET online = online + 1 WHERE id='".$row[id]."'");
header("Location: bruger/brugerindex.php");
}
}
?>
Men den fik jeg aldrig til at hvirke men det som den jeg skal bruge er at den skal kunne gemme id og brugernavn og password og rang og login i sessions og den skal gå ind på 2 forskælige sider og vis man er en admin kommer man ind på admin og vis bruger jamen så bruger se selv i koden hvordan det skal funke
Avatar billede stringbuffer Nybegynder
14. september 2003 - 15:29 #1
Dette er forkert:
$brugernavn = $HTTP_POST_VARS[brugernavn];
$password = $HTTP_POST_VARS[password];
Lav det om så der står:
$brugernavn = $_POST['brugernavn];
$password = $_POST['password'];
Avatar billede stringbuffer Nybegynder
14. september 2003 - 15:30 #2
Rettelse:
$brugernavn = $_POST['brugernavn'];
$password = $_POST['password'];
Avatar billede stringbuffer Nybegynder
14. september 2003 - 15:33 #3
Du bør også bruge:
$row['id'] og ikke $row[id]
Den slags har du mange af, du skal huske at du ikke kan indeksere et array med en ikke defineret konstant.
Avatar billede nightshad Nybegynder
14. september 2003 - 15:39 #4
Den slags har du mange af, du skal huske at du ikke kan indeksere et array med en ikke defineret konstant. || og der menes med det?
Avatar billede nightshad Nybegynder
14. september 2003 - 16:25 #5
<?
//Session
session_start();
//MySQL database con.
mysql_connect("X", "XX", "X") or die (mysql_error());
mysql_select_db("X_X") or die (mysql_error()); 
//Tjekker om man kommer fra en side hvor der er blevet submit
if(!isset($_POST['Submit'])) {
header("Location: login.php?fejl=side");
exit;
}
//Tjekker om det er rigtigt
$brugernavn = $_POST['brugernavn'];
$password = $_POST['password'];
$resultat = mysql_query("SELECT * FROM bruger WHERE brugernavn = '$brugernavn' AND password = '$password'"); 
//Antal Numre
$number = mysql_num_rows($resultat);
if($number != '1') {
header("Location: login.php?fejl=login");
exit; 
} elseif ($number == '1') {
$row = mysql_fetch_array($resultat) or die(mysql_error());
$id = $row['id'];
$_SESSION['login'] = "1";
$_SESSION['id'] = $id;
$_SESSION['brugernavn'] = $row['brugernavn'];
$_SESSION['password'] = $row['password'];
$_SESSION['rang'] = $row['rang'];
if ($row[rang] == 'admin') {
mysql_query("UPDATE bruger SET online = online + 1 WHERE id='".$row[id]."'");
header("Location: admin/adminindex.php");
} elseif ($row[rang]== 'bruger') {
mysql_query("UPDATE bruger SET online = online + 1 WHERE id='".$row[id]."'");
header("Location: bruger/brugerindex.php");
}
}
?>

Virer stadig ikke
Avatar billede stringbuffer Nybegynder
14. september 2003 - 20:01 #6
Prøv at indsætte

header('Content-Type: text/plain');
print_r($_POST);

i begyndelsen af scriptet og fortæl hvad den skriver.
Vis også din HTML-side til login.
Avatar billede stringbuffer Nybegynder
14. september 2003 - 20:04 #7
...og hvad er det præcis, der ikke virker? Kommer der en fejl eller bliver du sendt til den forkerte side? Hvilken?
Avatar billede nightshad Nybegynder
15. september 2003 - 14:33 #8
det der ikke hvirker er at den ikke gider gemme id i ens sessions... vi sjeg skriver echo "$row['id']"; så skriver den 1 som er rigtigt men den gider ikke gemme det i session's har du icq eller msn?
Avatar billede stringbuffer Nybegynder
15. september 2003 - 18:33 #9
Sikker på at du ikke har udeladt en session_start(); i din anden side?
Hvordan tjekker du session variablen i din anden side? Med $_SESSION['id'] ?
Er det din server? Jeg har før oplevet et webhotel, hvor sessions ikke virkede.
Principielt burde du kunne både sende headers og sætte sessioncookies, men prøv evt. at indsætte ob_start(); i toppen.
Avatar billede nightshad Nybegynder
15. september 2003 - 18:36 #10
har du ikke MSN eller ICQ så kan vi lige hurtig finde fejlen
Avatar billede stringbuffer Nybegynder
15. september 2003 - 19:04 #11
Nej, det bruger jeg ikke mere...
Avatar billede nightshad Nybegynder
15. september 2003 - 21:45 #12
mIRC?
Avatar billede stringbuffer Nybegynder
15. september 2003 - 22:19 #13
Intet...
Avatar billede nightshad Nybegynder
15. september 2003 - 22:21 #14
hehe ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester