Avatar billede syngredk Nybegynder
30. juli 2005 - 13:13 Der er 11 kommentarer og
1 løsning

PHP-Login - giver fejl

heysa,

jeg er ved at lave et login system, men der er pt. opstået lidt problemer.

Link: http://www.syngre.dk/login/login.php
Bruger: test
pass: test

Når man forsøger at logge ind, kommer den også frem med at man er logget ind, men alligevel giver den en fejl i linie 18 så man ikke bliver sendt videre.

Nogen som har en mulig løsning til dette problem?

---------------------------

<?php
include('admin/access/access_config.php');

if(!isset($_POST['Submit'])) { //Tester om brugeren kom fra  login.php
    echo "Du skal komme fra login.php";
    }else{
        $postbruger = $_POST['email'];
        $postpass = $_POST['password']; //For læservenligheden overføres post variablerne til normale variabler
       
        $resultat = mysql_query("SELECT Id FROM `users` WHERE email = '$postbruger' AND password = '$postpass'");//Spørger efter ID

        $number = mysql_num_rows($resultat);//Tæller antaller af resultater
        if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
        $_SESSION['loget_in'] = 1;
        $_SESSION['email'] = $postbruger;
        $_SESSION['password'] = $postpass; //Sætter session variablerne
        echo"Du er nu logget in";
        header("Location:inde.php");




        }else echo"De indtastede oplysninger er ikke korrekte";
        }
?>
Avatar billede taskmgr Nybegynder
30. juli 2005 - 13:15 #1
FLyt header("Location:inde.php"); op under din if($number == 1)...
Avatar billede taskmgr Nybegynder
30. juli 2005 - 13:16 #2
Du kan selvf. også bare fjerne det der udskrives :)
Og så kig lidt på http://dk2.php.net/header
Avatar billede syngredk Nybegynder
30. juli 2005 - 13:20 #3
$number = mysql_num_rows($resultat);//Tæller antaller af resultater
        if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
        $_SESSION['loget_in'] = 1;
        $_SESSION['email'] = $postbruger;
        $_SESSION['password'] = $postpass; //Sætter session variablerne
        echo"Du er nu logget in";
        header("Location:inde.php");

Ændret til:

        $number = mysql_num_rows($resultat);//Tæller antaller af resultater
        if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
        header("Location:inde.php");       
        $_SESSION['loget_in'] = 1;
        $_SESSION['email'] = $postbruger;
        $_SESSION['password'] = $postpass; //Sætter session variablerne
        echo"Du er nu logget in";

Så har jeg det problem, at når jeg trykker på login genlæser den blot siden :S
Avatar billede taskmgr Nybegynder
30. juli 2005 - 13:24 #4
$_SESSION['loget_in'] = 1;
$_SESSION['email'] = $postbruger;
$_SESSION['password'] = $postpass; //Sætter session variablerne
echo"Du er nu logget in";

De 4 linier skal du selvfølgelig have i "inde.php", da brugeren bliver sendt videre hertil efter din header()
Avatar billede taskmgr Nybegynder
30. juli 2005 - 13:26 #5
Vrøvl... Det er mig der er lidt træt :)

  $number = mysql_num_rows($resultat);//Tæller antaller af resultater
  if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in     
  $_SESSION['loget_in'] = 1;
  $_SESSION['email'] = $postbruger;
  $_SESSION['password'] = $postpass; //Sætter session variablerne
  header("Location:inde.php");
 
Den her skal du have i "inde.php":
echo"Du er nu logget in";
Avatar billede taskmgr Nybegynder
30. juli 2005 - 13:28 #6
Sagens kerne er, at du ikke må udskrive noget før du sætter din header().
Hverken HTML, ren tekst, mellemrum, eller andet.
Avatar billede syngredk Nybegynder
30. juli 2005 - 13:33 #7
Øhh, nu er jeg mere eller mindre lost...


login-test.php -->

<?php
include('admin/access/access_config.php');

if(!isset($_POST['Submit'])) { //Tester om brugeren kom fra  login.php
    echo "Du skal komme fra login.php";
    }else{
        $postbruger = $_POST['email'];
        $postpass = $_POST['password']; //For læservenligheden overføres post variablerne til normale variabler
       
        $resultat = mysql_query("SELECT Id FROM `users` WHERE email = '$postbruger' AND password = '$postpass'");//Spørger efter ID

        $number = mysql_num_rows($resultat);//Tæller antaller af resultater
        if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
        header("Location:inde.php");
        $_SESSION['loget_in'] = 1;
        $_SESSION['email'] = $postbruger;
        $_SESSION['password'] = $postpass; //Sætter session variablerne
        echo"Du er nu logget in";


        }else echo"De indtastede oplysninger er ikke korrekte";
        }
?>


inde.php --->

<?php
session_start();
if(!$_SESSION['loget_in'] == 1) {//Hvis brugeren ikke er logget in
header("Location: login.php");//Sender brugeren videre
exit;//Sørger for at resten af koden, ikke bliver udført
}

//Al din kode
echo"<form action=\"logud.php\" method=\"post\">\n";
echo"<input type=\"submit\" value=\"Log ud\">\n";
echo"</form>\n";
?>

Jubii Juhuu...
<br>
Du er logget ind!!!
<br><br>
Skriv dette i toppen af alle de sider som du vil have beskyttet:
<form name="form1" method="post" action="">
  <textarea name="textarea" cols="45" rows="16" wrap="VIRTUAL"><?php
session_start();
if(!$_SESSION['loget_in'] == 1) {//Hvis brugeren ikke er logget in
header("Location: login.php");//Sender brugeren videre
exit;//Sørger for at resten af koden, ikke bliver udført
}
//Al din kode
echo"<form action=\"logud.php\" method=\"post\">\n";
echo"<input type=\"submit\" value=\"Log ud\">\n";
echo"</form>\n";
?></textarea>
</form>


Hvad skulle ændres helt korrekt?
Avatar billede taskmgr Nybegynder
30. juli 2005 - 13:34 #8
Det er til at forstå. Jeg beklager :)

login-test.php -->

<?php
include('admin/access/access_config.php');

if(!isset($_POST['Submit'])) { //Tester om brugeren kom fra  login.php
    echo "Du skal komme fra login.php";
    }else{
        $postbruger = $_POST['email'];
        $postpass = $_POST['password']; //For læservenligheden overføres post variablerne til normale variabler
     
        $resultat = mysql_query("SELECT Id FROM `users` WHERE email = '$postbruger' AND password = '$postpass'");//Spørger efter ID

        $number = mysql_num_rows($resultat);//Tæller antaller af resultater
        if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
        $_SESSION['loget_in'] = 1;
        $_SESSION['email'] = $postbruger;
        $_SESSION['password'] = $postpass; //Sætter session variablerne
        header("Location:inde.php");


        }else echo"De indtastede oplysninger er ikke korrekte";
        }
?>
Avatar billede syngredk Nybegynder
30. juli 2005 - 13:36 #9
login-test.php er hermed ændret, men virker stadig ikke helt. HVis du prøver selv at logge ind via det link jeg angiver i mit spørgsmål. Så kan du se, man ryger lige tilbage til siden.
Avatar billede taskmgr Nybegynder
30. juli 2005 - 13:39 #10
Ja, du mangler i hvert fald en session_start() øverst i din login-test.php
Avatar billede syngredk Nybegynder
30. juli 2005 - 13:45 #11
Har hermed lavet en session start, og nu fungere det jo pludseligt :-)

Tak for hjælpen, smider du et svar smider jeg gerne lidt point efter dig :-P
Avatar billede taskmgr Nybegynder
30. juli 2005 - 13:46 #12
Velbekomme :)
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