kolla om användaren är inloggad

Permalänk

kolla om användaren är inloggad

Hej!
jag har skapat ett login script men nu är jag på jakt efter något som kollar om man är inloggad. Detta är min head på alla sidor även på de som man måste vara inloggade på.

<?php session_start();?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1" /> <title>David The Magicman - <?php echo $title; ?></title> <meta name="keywords" content="" /> <meta name="description" content="" /> <link href="style/style.css" rel="stylesheet" type="text/css" /> <link href="style/images/Logga.jpg" rel="icon"/> </head> <?php $currentPage = basename($_SERVER['SCRIPT_NAME']); ?> <body> <?php include "includes/connect_to_mysql.php"; $form= ""; if (isset($_POST['submit'])) { $username = $_POST['username']; $password = $_POST['password']; $password = preg_replace("[^A-Za-z0-9]", "", $_POST['password']); //$password = md5($password); $sql = "SELECT * FROM kunder WHERE username='".$username."' AND password='".$password."' LIMIT 1"; $res = mysql_query($sql) or die (mysql_error()); $userid = ""; if (mysql_num_rows($res) == 1) { while($row = mysql_fetch_array($res)){ $userid = $row["id"]; } $_SESSION['sess_user'] = $_POST['username']; header("Location: tycktill.php?id=$userid"); exit(); } else { $form ='Fel användarnamn och / eller lösernord.'; } } ?> <div id="container"> <div id="loggain"> <h2>Kundinloggning</h2> <form name="form1" method="post" action="<?php $currentPage; ?>"> Användarnamn: <br /> <input type="username" name="username" id="username"> <br /> Lösenord: <br /> <input type="password" name="password" id="code"> <br /> <input type="submit" name="submit" class="button_style" id="submit" value="Logga in"> </form> </div> <div id="logo"> <a href="index.php"> <img src="style/images/Logga.jpg" alt="David The Magicman" width="600px" height="100px"/> </a> </div> <div id="nav"> <div id="button1" <?php if ($currentPage == 'index.php') {echo 'class="active"';} ?>><a href="index.php">Startsidan</a></div> <div id="button2" <?php if ($currentPage == 'om.php') {echo 'class="active"';} ?>><a href="om.php">Om Mig</a></div> <div id="button3" <?php if ($currentPage == 'showen.php') {echo 'class="active"';} ?>><a href="showen.php">Showen</a></div> <div id="button6" <?php if ($currentPage == 'kunder.php') {echo 'class="active"';} ?>><a href="kunder.php">Borttrollade kunder</a></div> <div id="button4" <?php if ($currentPage == 'kontakta.php') {echo 'class="active"';} ?>><a href="kontakta.php">Kontakta Mig</a></div> <div id="button5" <?php if ($currentPage == 'press.php') {echo 'class="active"';} ?>><a href="press.php">Press<p><span id="small">(Även spel)</span></p></a></div> <!-- <div id="button5" <?php if ($currentPage == 'spel.php') {echo 'class="active"';} ?>><a href="spel.php">Spel<p><span id="small">(för barnen)</span></p></a></div> --> </div> <div class="clear"></div> <div id="fr"><span id="note" class="alert"><?php echo $form; ?></span></div>

Är det någon som kan komma med ett förslag på inloggnings kontroll???

Hälsningar/
Granskog

Permalänk
Inaktiv

Kolla med:

if(isset($_SESSION['sess_user']))

Måste dock säga att du alltid ska köra mysql_real_escape_string på allt du sätter in i databasen, hasha även lösenorden (förslags vis med SHA256).
Sen borde du inte köra preg_replace på lösenordet, om en användare tex. har ett ö i sitt lösenord försvinner det bara i lösenordet och det har användaren ingen koll på.

$username = mysql_real_escape_string($_POST['username']); $password = hash('sha256', $_POST['password']);

Permalänk

http://php.net/manual/en/function.session-regenerate-id.php

<php>session_regenerate_id(true);</php>

Bör användas innan du skapar nya sessionsvariablar. ($_SESSION)

Permalänk

Men om jag gör så kommer jag inte in på sidorna. Varför den nya koden är nu

<?php session_start();?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1" /> <title>David The Magicman - <?php echo $title; ?></title> <meta name="keywords" content="" /> <meta name="description" content="" /> <link href="style/style.css" rel="stylesheet" type="text/css" /> <link href="style/images/Logga.jpg" rel="icon"/> </head> <?php $currentPage = basename($_SERVER['SCRIPT_NAME']); ?> <body> <?php include "includes/connect_to_mysql.php"; $form= ""; if (isset($_POST['submit'])) { $username = mysql_real_escape_string($_POST['username']); $password = $_POST['password']; $password = preg_replace("[^A-Za-z0-9]", "", $_POST['password']); //$password = md5($password); $sql = "SELECT * FROM kunder WHERE username='".$username."' AND password='".$password."' LIMIT 1"; $res = mysql_query($sql) or die (mysql_error()); $userid = ""; if (mysql_num_rows($res) == 1) { while($row = mysql_fetch_array($res)){ $userid = $row["id"]; } session_regenerate_id(); $_SESSION['sess_user'] = $_POST['username']; header("Location: tycktill.php?id=$userid"); exit(); } else { $form ='Fel användarnamn och / eller lösernord.'; } } ?> <?php function using_ie() { $u_agent = $_SERVER['HTTP_USER_AGENT']; $ub = False; if(preg_match('/MSIE/i',$u_agent)) { $ub = True; } return $ub; } function ie_box() { if (using_ie()) { ?> <div class="iebox"> Denna sidan är inte designad för Internet Explorer. Om du vill se hela designen, var snäll och använd en webbläsare som: <a href="http://www.google.com/chrome" target="_blank">Google Chrome</a>. </div> <?php return; } } ?> <div id="ie"><?php echo ie_box(); ?></div> <div id="container"> <div id="loggain"> <h2>Kundinloggning</h2> <form name="form1" method="post" action="<?php $currentPage; ?>"> Användarnamn: <br /> <input type="username" name="username" id="username"> <br /> Lösenord: <br /> <input type="password" name="password" id="code"> <br /> <input type="submit" name="submit" class="button_style" id="submit" value="Logga in"> </form> </div> <div id="logo"> <a href="index.php"> <img src="style/images/Logga.jpg" alt="David The Magicman" width="600px" height="100px"/> </a> </div> <div id="nav"> <a href="index.php"><div id="button1" <?php if ($currentPage == 'index.php') {echo 'class="active"';} ?>>Startsidan</div></a> <a href="om.php"><div id="button2" <?php if ($currentPage == 'om.php') {echo 'class="active"';} ?>>Om Mig</div></a> <a href="showen.php"><div id="button3" <?php if ($currentPage == 'showen.php') {echo 'class="active"';} ?>>Showen</div></a> <a href="kunder.php"><div id="button6" <?php if ($currentPage == 'kunder.php') {echo 'class="active"';} ?>>Borttrollade kunder</div></a> <a href="kontakta.php"><div id="button4" <?php if ($currentPage == 'kontakta.php') {echo 'class="active"';} ?>>Kontakta Mig</div></a> <a href="press.php"><div id="button5" <?php if ($currentPage == 'press.php') {echo 'class="active"';} ?>>Media<p><span id="small">(även spel)</span></p></div></a> <!-- <div id="button5" <?php if ($currentPage == 'spel.php') {echo 'class="active"';} ?>><a href="spel.php">Spel<p><span id="small">(för barnen)</span></p></a></div> --> </div> <div class="clear"></div> <div id="fr"><span id="note" class="alert"><?php echo $form; ?></span></div>

och sidorna som ska vara skyddade ligger inom if(isset($_SESSION['sess_user']))
och sen else skickar dem tillbaka till index.php.

Permalänk

testa att lägga logga in, sen lägger du koden i ett test-php-dokument.

<?php if(isset($_SESSION['sess_user'])) echo $_SESSION['sess_user']; else echo "Du är inte inloggad!"; ?>

Gå in på sidan.
Får du fram ditt användarnamn?

Permalänk

Nej, jag antar att det har något med inloggningen och göra som lser ut så här nu:

<?php session_start();?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1" /> <title>David The Magicman - <?php echo $title; ?></title> <meta name="keywords" content="" /> <meta name="description" content="" /> <link href="style/style.css" rel="stylesheet" type="text/css" /> <link href="style/images/Logga.jpg" rel="icon"/> </head> <?php $currentPage = basename($_SERVER['SCRIPT_NAME']); ?> <body> <?php include "includes/connect_to_mysql.php"; $form= ""; if (isset($_POST['submit'])) { $username = mysql_real_escape_string($_POST['username']); $password = $_POST['password']; $password = preg_replace("[^A-Za-z0-9]", "", $_POST['password']); //$password = md5($password); $sql = "SELECT * FROM kunder WHERE username='".$username."' AND password='".$password."' LIMIT 1"; $res = mysql_query($sql) or die (mysql_error()); $userid = ""; if (mysql_num_rows($res) == 1) { while($row = mysql_fetch_array($res)){ $userid = $row["id"]; } session_regenerate_id(); $_SESSION['sess_user'] = $_POST['username']; header("Location: test.php"); /*header("Location: tycktill.php?id=$userid");*/ exit(); } else { $form ='Fel användarnamn och / eller lösernord.'; } } ?> <?php function using_ie() { $u_agent = $_SERVER['HTTP_USER_AGENT']; $ub = False; if(preg_match('/MSIE/i',$u_agent)) { $ub = True; } return $ub; } function ie_box() { if (using_ie()) { ?> <div class="iebox"> Denna sidan är inte designad för Internet Explorer. Om du vill se hela designen, var snäll och använd en webbläsare som: <a href="http://www.google.com/chrome" target="_blank">Google Chrome</a>. </div> <?php return; } } ?> <div id="ie"><?php echo ie_box(); ?></div> <div id="container"> <div id="loggain"> <h2>Kundinloggning</h2> <form name="form1" method="post" action="<?php $currentPage; ?>"> Användarnamn: <br /> <input type="username" name="username" id="username"> <br /> Lösenord: <br /> <input type="password" name="password" id="code"> <br /> <input type="submit" name="submit" class="button_style" id="submit" value="Logga in"> </form> </div> <div id="logo"> <a href="index.php"> <img src="style/images/Logga.jpg" alt="David The Magicman" width="600px" height="100px"/> </a> </div> <div id="nav"> <a href="index.php"><div id="button1" <?php if ($currentPage == 'index.php') {echo 'class="active"';} ?>>Startsidan</div></a> <a href="om.php"><div id="button2" <?php if ($currentPage == 'om.php') {echo 'class="active"';} ?>>Om Mig</div></a> <a href="showen.php"><div id="button3" <?php if ($currentPage == 'showen.php') {echo 'class="active"';} ?>>Showen</div></a> <a href="kunder.php"><div id="button6" <?php if ($currentPage == 'kunder.php') {echo 'class="active"';} ?>>Borttrollade kunder</div></a> <a href="kontakta.php"><div id="button4" <?php if ($currentPage == 'kontakta.php') {echo 'class="active"';} ?>>Kontakta Mig</div></a> <a href="press.php"><div id="button5" <?php if ($currentPage == 'press.php') {echo 'class="active"';} ?>>Media<p><span id="small">(även spel)</span></p></div></a> <!-- <div id="button5" <?php if ($currentPage == 'spel.php') {echo 'class="active"';} ?>><a href="spel.php">Spel<p><span id="small">(för barnen)</span></p></a></div> --> </div> <div class="clear"></div> <div id="fr"><span id="note" class="alert"><?php echo $form; ?></span></div>

Permalänk

ta bort

header("Location: test.php");

och lägg till

echo "Du har loggat in med $_SESSION[sess_user]";

sätt också en echo direkt efter måsvingen

if (isset($_POST['submit'])) {

Om inte den echoen funkar skickas helt enkelt inte POST-variabeln submit.

Echo är ett jättebra sätt att felsöka.
Ibland har jag varannan rad med echo bara för att se VART koden stannar etc

Permalänk

Jag får användarnamnet när jag kör den så...
Vad kan det vara för fel då???

Permalänk
Skrivet av granskog1:

Jag får användarnamnet när jag kör den så...
Vad kan det vara för fel då???

Såg nu att jag hade glömt session_start(); i mitt exempel.
Lägg dit

<?php session_start(); ?>

(längst upp)
på alla sidor som man måste vara inloggad på!

Permalänk

Men

<?php session_start(); ?>

ligger på alla sidor då den kod ni har set är inkluderade i alla sidor och jag får då användarnamnet.

Permalänk

jag börja tro att det är den här sidan det är fel på:

<?php /*if(isset($_SESSION['sess_user'])) {*/ $id = $_GET['id']; include "includes/connect_to_mysql.php"; $sql = mysql_query("SELECT * FROM kunder WHERE id='$id' LIMIT 1"); while($row = mysql_fetch_array($sql)){ $namn = $row["name"]; $foretag = $row["foretag"]; $adress = $row["adress"]; $postadress = $row["postadress"]; $epost = $row["epost"]; $nummer = $row["nummer"]; } $title = "Showen"; include 'header.php'; echo "Du har loggat in med $_SESSION[sess_user]"; echo ' <h1>Tyck till!</h1> <form name="tycktill" method="post" action="includes/tycktill.php"> <p> Kontrollera de första uppgifterna, vid fel ändra dem.<br /><br /> Namn: <input value="'.$namn.'" type="text" name="Namn"/><br /><br /> Företagets namn: <input value="'.$foretag.'" type="text" name="foretag" /><br /> <span id="note">(Om du fyller i för ett företags räkning.)</span> <br /><br /> Adress: <input value="'.$adress.'" type="text" name="Adress" /><br /><br /> Post adress: <input value="'.$postadress.'" type="text" name="Postadress" /><br /><br /> Mejladress: <input value="'.$epost.'" type="text" name="Mejl" size="23px" /><br /><br /> Telefonnummer: <input value="'.$nummer.'" type="text" name="Nummer" size="10px"/><br /><br /> Typ av show:<br /><br /> <select name="Show"> <option value="barntrolleri">Barntrolleri</option> <option value="personalfest">Personalfest</option> <option value="födelsedagskalas vuxen">Födelsedagskalas vuxen</option> <option value="Annan typ av fest/kalas">Annan typ av fest/kalas</option> </select> <br /><br />Hur var längden på showen:<br /><br /> <select name="Langd"> <option value="På tok för kort">På tok för kort</option> <option value="Kort">Kort</option> <option value="Perfekt">Perfekt</option> <option value="Lång">Lång</option> <option value="På tok för Lång">På tok för Lång</option> </select> <br /><br />Priset:<br /><br /> <select name="Pris"> <option value="På tok för billigt">På tok för kort</option> <option value="billigt">Billigt</option> <option value="Perfekt">Perfekt</option> <option value="Dyrt">Dyrt</option> <option value="På tok för dyrt">På tok för dyrt</option> </select> <br /><br />Helhetsbetyg:<br /><br /> <select name="Betyg"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <br /><br />Övrigt:<br /><br /> <textarea name="Ovrigt"></textarea> <br /><br /> Jag godkänner att mina kommentarer används i reklam och kampanj syfte:<br /><br /> <select name="Kampanj"> <option value="Ja">Ja</option> <option value="Nej">Nej</option> </select> <br /><br /> <button type="submit" value="Skicka" class="button_style">Skicka</button> </form> '; include 'footer.php';/* } else{ header("Location: index.php"); }*/ ?>

Detta är sidan jag nekas ifrån när jag försöker att logga in.
Den har även kodningen ni redan har fått inkluderad i toppen av sidan.
den här raden:
echo "Du har loggat in med $_SESSION[sess_user]";
Matar ut användarnamnet så det funkar men inte i IF satsen.

Varför???

Permalänk

Jag löste det.
Jag flyttade alla includes utanför IF satsen.

Tack för all hjälp