Avatar billede tras Juniormester
06. december 2005 - 13:12 Der er 8 kommentarer og
1 løsning

Sid tjek problemer med login tjek

Jeg har nogle problemer med mit login system. Når den skal tjekke om jeg er logget ind, virker det ikke vis jeg bruger ?index.php?page=home men bruger jeg den sådan home.php uden noget foran virker det fint. hvad kan det skylles og hvad skal jeg lave om.?!

Loginform.
<? if($_SESSION['username'] == ""){?>
<div align="center">
<form method="POST" action="login.php">
<p>Username:<input type="text" name="username" size="20"></p>
<p>Password: <input type="password" name="password" size="20"></p>
<p><input type="submit" value="Login" name="Submit"></p>
</form>
</div>
<? }else{
include_once("functions.php");
connectToDatabase();
authenticateUser();
?>
Du er nu logget ind på denne hjemmeside:D
<? }?>


Login.
<?php
if ($_POST) { //If user has submitted data from form
    if ($_POST['username'] == "" || $_POST['password'] == "") { //If any of the fields are empty
        $error = "One or more fields are empty, please fill in all the fields";
    } else { //Fields are not empty
        session_start();// Needed to initialise session variables (i.e. start session :D)
        $_SESSION['username'] = htmlspecialchars($_POST['username']);
        $_SESSION['password'] = htmlspecialchars($_POST['password']);
        header("location: index.php?page=protected&sid=".strip_tags(session_id()).""); //Redirect to protected.php, but can be whatever you want
    }
}
if (isset($_GET['id'])) {//if the id var exists in the url
    $error = "One or more fields you have entered are incorrect, please try again";
}
echo $error;
?>



Home.php // protected page
<?
include_once("functions.php");
connectToDatabase();
authenticateUser();
?>
Welcome to Gamersloot DK a page for friends. Share you information and game experience here.



functions.php
<?php
function authenticateUser() {

session_start();
$query = "SELECT username FROM db_users WHERE username = '".$_SESSION['username']."' AND password = '".md5($_SESSION[password])."';"; //Select from database the username & password the user entered
$result = mysql_query($query) or die('Query failed: ' . mysql_error()); //Query the db
if (!isset($_GET['sid'])) { // If the sid URL var exists in the url
header("location: index.php?page=login.php&id=1"); //does not exists
} else { //sid exists
if ($_GET['sid'] != session_id()) { //check URL sid with current sid
header("location: index.php?page=login.php&id=1"); //does not match
}
}
if (!mysql_num_rows($result)) { //If no match
header("location: index.php?page=login.php&id=0"); //redirect to login page with username/password error
}
}
?>
Avatar billede Slettet bruger
06. december 2005 - 14:12 #1
Jeg tror det skyldes, at alt logon foregår ikke fra home.php.

Hvad er det du vil med ?index.php?page=home ?

--
pacroon
Avatar billede tras Juniormester
06. december 2005 - 14:14 #2
Well. index.php?page=home sender dig til home.php inde i index.php

www.gamersloot.dk/friends-net/
Avatar billede Slettet bruger
06. december 2005 - 14:18 #3
Hvordan er det så at fejlen udarter sig?
Avatar billede tras Juniormester
06. december 2005 - 14:29 #4
www.gamersloot.dk/friends-net/home.php
tryk på home i når du er inde på www.gamersloot.dk/friends-net/
og du vil se at den virker ikke andet end vis du skriver www.gamersloot.dk/friends-net/home.php
Avatar billede Slettet bruger
06. december 2005 - 14:34 #5
Jeg har ikke brugernavn og kodeord :)
Avatar billede tras Juniormester
06. december 2005 - 14:38 #6
nope ved jeg og kan ikke lave et pt. sorry Men logger du ind får du ikke nogle problemer du kan se siderne på alle måder. Men nu skal du jo også kun vide at du ikke må kunne se siderne. www.gamersloot.dk/friends-net/home.php lige som her. sådan skal det se ud når du ser siden og ikke sådan http://www.gamersloot.dk/friends-net/?page=home
Avatar billede Slettet bruger
06. december 2005 - 15:45 #7
Så skal du lave det på en anden måde.

Så skal du lave en funktion der, på alle sider man skal være logget ind for at se, tjekker om man er logget ind.
Du kan tilføje en ekstra variabel i denne side:

Login.
<?php
if ($_POST) { //If user has submitted data from form
    if ($_POST['username'] == "" || $_POST['password'] == "") { //If any of the fields are empty
        $error = "One or more fields are empty, please fill in all the fields";
    } else { //Fields are not empty
        session_start();// Needed to initialise session variables (i.e. start session :D)
        $_SESSION['username'] = htmlspecialchars($_POST['username']);
        $_SESSION['password'] = htmlspecialchars($_POST['password']);
------> $_SESSION['logged_in'] = true; <--------------------------------------
        header("location: index.php?page=protected&sid=".strip_tags(session_id()).""); //Redirect to protected.php, but can be whatever you want
    }
}
if (isset($_GET['id'])) {//if the id var exists in the url
    $error = "One or more fields you have entered are incorrect, please try again";
}
echo $error;
?>

I fejlsiden laver du så:

<?php
session_start();
if ($_SESSION['logged_in'] != true) {
    echo "Du skal være logget ind for at se denne side";
}

.. og inkludere denne login-checker i toppen af alle sider man skal være logget ind for at se.

--
pacroon
Avatar billede tras Juniormester
16. januar 2006 - 12:24 #8
tak
Avatar billede Slettet bruger
16. januar 2006 - 14:14 #9
Skulle jeg ikke have point for det svar? :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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