Gå til innhold

LØST: sjekke om bruker er pålogget med scriptet:


Anbefalte innlegg

Skrevet (endret)

Hei!

Vil bare at det logg inn scriptet her skal bli enda litt bedre jeg...

 

 

Logg inn scripet:

<?php

if ($_SESSION['online']) {
echo "
Welcome " . $_SESSION['username'] . "!

";
}

else if (isset($_POST['username']) && isset($_POST['password'])) {
$db=mysql_connect("localhost", "brukernavn", "passord");
mysql_select_db("db_navn", $db);


  $username = htmlentities($_POST['username']);
  $password = htmlentities($_POST['password']);
 
  $username = mysql_real_escape_string($username);
  $password = mysql_real_escape_string($password);

  $query = mysql_query("SELECT username, password FROM members WHERE username = '$username' AND password = '$password'");

 
  if(mysql_num_rows($query) == 1) {
  $_SESSION['online'] = true;
  $_SESSION['username'] = $username;
  echo "
Welcome " . $_SESSION['username'] . "!
";
}

  if(mysql_num_rows($query) == 0) {
  $_SESSION['online'] = false;
  $_SESSION['username'] = $username;
  echo "
Wrong username or password!
";
mysql_close($db);
  }
}
else {
?>
<form action="" method="post">
<p><strong>Username</strong><br /><input type="text" name="username" /></p>
<p><strong>Password</strong><br /><input type="password" name="password" /></p>
<p> <br /><input type="submit" name="submit" value=" Login " /></p>
</form>
<?php
}
?>

Selve scripet fungerer helt bra, men jeg vil prøve noe annet i stedet for å ha hele det scriptet på hver side...

 

Jeg vil sette det over <html> og bruker header location hvis man ikke er pålogget.

Og jeg har prøvd litt, men jeg blir bare tatt med tilbake til index.php hver gang, selv om jeg er pålogget og.

 

 

 

 

Det her satte jeg over Doctypen på sida jeg skal beskytte:

<?php
session_start();

$db=mysql_connect("localhost", "brukernavn", "passord");
mysql_select_db("db_navn", $db);

$query = mysql_query("SELECT username, password FROM members WHERE username = '$username' AND password = '$password'");

  if(mysql_num_rows($query) == 0) {
  $_SESSION['online'] = false;
  $_SESSION['username'] = $username;
header ('location: index.php');
mysql_close($db);
  }
  if(mysql_num_rows($query) == 1) {
  $_SESSION['online'] = true;
  $_SESSION['username'] = $username;
mysql_close($db);
  }
?>

Men det fungerte jo som sagt ikke helt...

Endret av Andy-Pandy
Videoannonse
Annonse
Skrevet

Legg login-scriptet i en egen fil.

Så i alle filer du vil beskytte:

<?php

session_start();

require_once("login.php");

 

if (!$_SESSION['online']) {

die();

}

 

// innholdet her

?>

Skrevet (endret)

if (!$_SESSION['online']) {

die();

}

?

 

Den kan ikke stemme helt, kan den? Die dreper den jo på en måte...jaja, prøver den uansett så får vi se.

 

 

Edit:

Hmm...får det ikke til å fungere helt.

 

 

Er man logget inn skal man ikke bli sendt bort fra sida, men er man ikke pålogget, skal jeg bruke header ('location: index.php') siden det ikke fungerer under noe annen kode...da blir det bare feilmelding om at den ikke kan "modify headers".

Men hvis jeg kunne ha brukt header location midt på sida, hadde det ikke vært noe problem. Nå har jeg bare meta redirects =/

Endret av Andy-Pandy
Skrevet

Ingen som har noen andre ideer? Får det rett og slett ikke til å fungere... Synd man ikke kan bruke header location midt i body delen, for da hadde jeg ikke trengt å spørre xD

 

Det der sa jeg kanskje litt før óg det, gjorde jeg ikke? Haha!

Skrevet

Hvorfor må du kjøre "header: location"?

Er det ikke greit at innloggings-siden vises da?

 

Hva er problemet med å bruke det jeg foreslo? Fungerer det ikke?

Skrevet

Jo, men jeg har en admin mappe, som skal beskyttes, og jeg klarer ikke bruke legge til MySQL koden (annen tabell), inni den siden den allerede logget på...kanskje det går? Uansett, da må jeg skrive inn koden to ganger inni koden av en eller annen grunn :S

 

 

Men innloggingskjemaet ligger på venstre sida hele tida, så man trenger jo ikke å gå til den "hemmelige" mappa før man logger på...

Skrevet

Du kan legge dette øverst i alle sidene du vil beskytte da:

<?php

session_start();

 

if (!$_SESSION['online']) {

header("Location: et-eller-annet-sted.php");

die;

}

 

// innholdet

?>

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...