Gå til innhold

Hjelp til enkelt PHP login-script?


Anbefalte innlegg

Hei, jobber med et enkelt php login script som ser sånn ut:

&--#60;?php
if (isset($_REQUEST['attempt']))
{
$link = mysql_connect('#', '#', '#') or die('Cant connect to database');
mysql_select_db('#');
$user = mysql_real_escape_string($_POST['user']);
$password = sha1(mysql_real_escape_string($_POST['password']));
$query = mysql_query("
SELECT user
FROM users
WHERE user = '$user'
AND password = '$password'
") or die(mysql_error());
 $total = mysql_num_rows($query);

 if ($total &--#62; 0)
 {
  session_start();
$_SESSION['user'] = "blah";
header("Location: logs.php");
 }
 else
 {
  echo "Fuck You";
 }
}
?&--#62;

 

og logs.php...

 

if (!isset($_SESSION['user']))
{
header("Location: login.php");
}
?&--#62;

 

Brukeren jeg har i databasen heter skillew.

 

Når jeg trykker login med rett passord og brukernavn så blir jeg direkte retunert til samme side, altså login.php

 

Dersom jeg trykker login med feil passord og brukernavn så kommer "Fuck You" opp, akkuratt som planlagt.

 

Noen som kan hjelpe? I tillegg vil jeg ha noe problem med å skrive til logs.php uten login detaljene med en annen php fil? Diverse send.php

Endret av Mr.Postman
Lenke til kommentar
Videoannonse
Annonse
  • 3 uker senere...

For å si det slik, ville jeg satt "session_start();" i alle dine php filer fordi det er du bruker. Er ikke session_start() der virker ikke session.

Også sett "$_SESSION['user'] = "blah";" til $_SESSION['user'] = true;" siden du skjekker om den er "false." Eller, endre "if (!isset($_SESSION['user']))" til "if ($_SESSION['user'] == ""){."

 

BTW, session_start() være øverst i dokumentet før noen annen ting.

Lenke til kommentar

session_start() må strengt tatt kun være før noen annen output:

To use cookie-based sessions, session_start() must be called before outputing anything to the browser.

--

 

Ikke bruk $_REQUEST, du har ikke kontroll på hvor informasjonen kommer i fra. $_REQUEST inneholder alt fra $_COOKIE, $_POST og $_GET

Endret av Crowly
Lenke til kommentar
  • 1 måned senere...

Som Crowly sier, så spesifiser om du for eks. bruker HTTP post.

 

Da skriver du for eks.:

if (isset($_POST['attempt']))

 

Og når det kommer til å definere en session variabel etter pålogging er akseptert, så er jeg ikke enig med thypthon^ det er ganske greit å lagre bruker id'en til den personen som logger seg på. Se eksempel:

$total = mysql_num_rows($query);
$obj = mysql_fetch_object($query);
if ($total &--#62; 0)
{
$_SESSION['uid'] = $obj-&--#62;id;
header('Location: logs.php');
}

 

For at dette skal fungere må du legge til et felt i tabellen din som heter ID med auto_increment som er en primærnøkkel, ettersom den alltid vil være unik. Du må også huske å legge til feltet i sql queryen ($query variabelen).

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