Avatar billede tras Juniormester
23. november 2005 - 09:01 Der er 24 kommentarer og
1 løsning

Advanced php login

Hej jeg har et problem med mit login system, har nogle problemer med at få skittet til at virke.

Når jeg logger ind stopper den på login ved print(hej5)?! den kommer bare ikke hvidre?!

Her er alle de sider jeg bruger i mit login.

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


Login.php
----------------------------------------------------------------
<?php
print(Hej);
    if ($_POST) { //If user has submitted data from form
    print(Hej2);
        if ($_POST['username'] == "" || $_POST['password'] == "") { //If any of the fields are empty
        print(Hej3);
            $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)
            include_once("functions.php");
            connectToDatabase();
            $_SESSION['username'] == $_POST['username'];
            $_SESSION['password'] == $_POST['password'];
            header("location: protected.php"); //Redirect to protected.php, but can be whatever you want (your staff index page)
            print(Hej5);
        }
       
    }
    if (isset($_GET['id'])) {//if the id var exists in the url
    print(Hej6);
        $error = "One or more fields you have entered are incorrect, please try again";
       
    }
   
?>

<?php

echo $error;
?>



functions.php
----------------------------------------------------------------
<?php
$database = "gamersloot_dk";
$dbusername = "gamersloot_dk";
$dbpassword = "120386";
$dbhost = "localhost";

function connectToDatabase() {

global $database, $dbusername, $dbpassword, $dbhost; //make the vars accessible from inside the function
$link = mysql_connect($dbhost, $dbusername, $dbpassword) or die('Could not connect: ' . mysql_error()); //connect
mysql_select_db($database) or die('Could not select database'); //select the db to use
}

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 (!mysql_num_rows($result)) { //If no match
header("location: login.php"); //redirect to login page
}
}
?>



protected.php
-----------------------------------------------------------------
<?
include_once("functions.php");
connectToDatabase();
authenticateUser();
?>
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<div>hej</div>
</body>
</html>


WTH is wrong=?!
Avatar billede jakobdo Ekspert
23. november 2005 - 09:16 #1
Smid exit(); efter din header("location: protected.php"); //Redirect to protected.php, but can be whatever you want (your staff index page)
Avatar billede webstuff Nybegynder
23. november 2005 - 09:17 #2
hvis jeg var dig ville jeg skynde mig at få en eller anden til at rette det her indlæg, du har skrevet kodeord og brugernavn og hele lortet til din database!!!

Start med det!!
Avatar billede tras Juniormester
23. november 2005 - 09:19 #3
Take it easy det er jo fake info der er i dem :P
Avatar billede stalle Nybegynder
23. november 2005 - 09:21 #4
Det har han, men jeg ved ikke hvilken server jeg skal bruge de informationer på.
Men ellers en skidt ting og offentligegøre
Avatar billede tras Juniormester
23. november 2005 - 09:22 #5
Får beskeden

HejHej2Could not connect: Access denied for user: 'gamersloot_dk@localhost' (Using password: YES)
Avatar billede jakobdo Ekspert
23. november 2005 - 09:23 #6
Du kan ikke bruge en header efter du har smidt output til skærmen, hvilket du gør med print().
Avatar billede tras Juniormester
23. november 2005 - 09:24 #7
Ok det viste jeg ikke. Fjerner den lige
Avatar billede tras Juniormester
23. november 2005 - 09:26 #8
Men får jo stadig beskeden Could not connect: Access denied for user: 'gamersloot_dk@localhost' (Using password: YES)
Avatar billede tras Juniormester
23. november 2005 - 09:30 #9
Kan det passe at info'en i function connectToDatabase() { er WRONG?
Avatar billede stalle Nybegynder
23. november 2005 - 09:31 #10
Så  er det jo fordi dit logon er forkert
Avatar billede tras Juniormester
23. november 2005 - 09:33 #11
Nope det er det ikke, min ie var langsom med at opdatere tror jeg for nu siger den ikke noget men den bliver så også bare på siden login.php ???? og den kommer ikke væk der fra


login.php
-------------------------------
<?php
include_once("functions.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)
            connectToDatabase();
            $_SESSION['username'] == $_POST['username'];
            $_SESSION['password'] == $_POST['password'];
            header("location: protected.php"); //Redirect to protected.php, but can be whatever you want (your staff index page)
            exit();
        }
       
    }
    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";
       
    }
   
?>

<?php

echo $error;
?>
Avatar billede stalle Nybegynder
23. november 2005 - 09:36 #12
Jeg gætter så lidt på at det er fordi der ikke er nogen bruger med den adgangskode du angiver.
Avatar billede stalle Nybegynder
23. november 2005 - 09:40 #13
prøv at vis de informationer der ligger i databasen, om den bruger du logger ind med.
Altså brugernavn og password.
Avatar billede tras Juniormester
23. november 2005 - 09:44 #14
Den stopper igen ved login og kommer ikke væk der fra
Avatar billede stalle Nybegynder
23. november 2005 - 09:47 #15
Hvis ikke den giver dig noget output, er det fordi den fejler, som jeg lige kan tyde scriptet
Avatar billede johan.o Nybegynder
23. november 2005 - 10:15 #16
$_SESSION['username'] == $_POST['username'];
$_SESSION['password'] == $_POST['password'];

burde det ikke være :

$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];

Mvh. Johan
Avatar billede stalle Nybegynder
23. november 2005 - 10:43 #17
Det har du da ret i
Avatar billede tras Juniormester
23. november 2005 - 12:03 #18
Ok kan godt se fejlen nu, men når jeg skriver forkert brugernavn, skriver den ikke at jeg har skrevet forkert men bliver på login.php

Den burde da gå ned og tage næste stykke kode når den ikke finder brugernavn osv.?
Avatar billede johan.o Nybegynder
23. november 2005 - 12:21 #19
Jeg er ikke helt klar over hvordan din kode ser ud nu, men hvis vi nu skriver forkert brugernavn i index.php --> submit --> login.php sender header("location: protected.php") --> i protected.php kaldes authenticateUser() som sender header("location: login.php"); --> $_POST=false og $_GET['id']=false --> $error="";

Hvis det er korrekt mangler der vel header("location: login.php?id=douhhhhh"); i autheticateUser().

Mvh. Johan
Avatar billede tras Juniormester
23. november 2005 - 13:03 #20
Ja men vis dit brugernavn eller kode er WRONG så er den ikke = med noget i dben og det føre til et stop i login.php hvor den ikke kommer væk fra....

Og den går ikke ned og siger at brugernavn eller pass er wrong... du kan jo ikke komme ind på siden protected fra login uden at være logget korikt ind...
Avatar billede tras Juniormester
23. november 2005 - 13:04 #21
Login.php

<?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";
           
        } elseif ($_POST['username'] != "" || $_POST['password'] != "") { //Fields are not empty
            session_start(); // Needed to initialise session variables (i.e. start session :D)
            include_once("functions.php");
            connectToDatabase();
            $_SESSION['username'] = $_POST['username'];
            $_SESSION['password'] = $_POST['password'];
            header("location: protected.php"); //Redirect to protected.php, but can be whatever you want (your staff index page)
        } else {
            $error = "One or more fields you have entered are incorrect, please try again";
        }
    }
   
   
?>
<?php

echo $error;
?>
Avatar billede tras Juniormester
23. november 2005 - 13:07 #22
Hehe det er jo sessions jeg skal bruger? ubs

<?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";
           
        } elseif ($_POST['username'] = ($_SESSION['username']) || $_POST['password'] = ($_SESSION['password'])) { //Fields are not empty
            session_start(); // Needed to initialise session variables (i.e. start session :D)
            include_once("functions.php");
            connectToDatabase();
            $_SESSION['username'] = $_POST['username'];
            $_SESSION['password'] = $_POST['password'];
            header("location: protected.php"); //Redirect to protected.php, but can be whatever you want (your staff index page)
        } else {
            $error = "One or more fields you have entered are incorrect, please try again";
        }
    }
   
   
?>
<?php

echo $error;
?>
Avatar billede tras Juniormester
23. november 2005 - 13:07 #23
Nå tak for hjælpen lav lige et svar så du kan få dine vejfortjænte points
Avatar billede johan.o Nybegynder
23. november 2005 - 15:55 #24
Øhm, jeg er ikke helt klar over hvad det er meningen der skal ske i det ovenstående ?!

Virker det ?

elseif($_POST['username']=($_SESSION['username'] || osv...

$_POST['username'] mener jeg ikke du kan tildele en værdi....

Hvis du mener $_POST['username']==$_SESSION['username'] hvordan logger man så ind første gang, du sætter jo først session_start() efter denne linje, så første gang må $_SESSION['username'] være lig "" ?

Mvh. Johan
Avatar billede tras Juniormester
16. januar 2006 - 12:19 #25
no
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