Avatar billede khr02 Nybegynder
14. maj 2012 - 18:47 Der er 11 kommentarer og
1 løsning

PHP probelemer med login i booking system

Hej eksperter!
Vi har et problem med et php login, som vi ikke kan gennemskue. Det er et booking system, med et par php filer, connected til en database. Database mm. virker fint. Problemet er at vi ikke kan komme videre fra forsiden (html) til login siden (php). Hvis vi fjerner et loop på login.php filen, kan vi komme til "login hjemmesiden" (html), men den tjekker ikke om brugernavn og pass er korrekt, og vender direkte tilbage til de tomme login felter (samme side).
Hjælp er meget værdsat :-) !!! Tak.

Her er login.php filen:

<?php
    session_start();
    include('scr/login_inc.php');
   
/*nedenstående if loop har vi prøvet at tage ud, og vi kan dermed komme videre til login siden,men den burde virke med dette loop?*/

if(!isset($sesid)){
    header("location: http://www.farimagsgade.dk/riomira/index.php");
    exit;
    }

    //nedenstående loop er vist ok?

          if(isset($user)){
            $login = loginCheck($user, $pass, $REMOTE_ADDR, $sesid);
                if($login > 0){
                $_SESSION['user'] = $user;
                $_SESSION['pass'] = $pass;
                $_SESSION['uniqueid'] = $sesid;
                if($login==2){
                $_SESSION['admlevel'] = $login;}
                header("location: http://www.farimagsgade.dk/riomira/index.php");
                exit;
            }
        else {
            unset($user);
            unset($pass);
            $errMessage = "<H2>Forkert brugernavn og/eller password.<br>Prøv igen. Fejlkode: $login<br></H2>\n";
            }
        }
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
    <TITLE>Riomira Login</TITLE>
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<LINK HREF="matr/main.css" REL="stylesheet" TYPE="text/css">
</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#336699" VLINK="#660066" ALINK="#FF0000" TOPMARGIN="0" LEFTMARGIN="0">
<TABLE WIDTH="*" HEIGHT="101" BORDER="0" CELLSPACING="0" CELLPADDING="0" bgcolor="#FFFFFF">
<TR VALIGN="top">
<TD width="150" BGCOLOR="#336699"></TD>
<TD width="20"></TD>
<TD width="330"><H1>RIOMIRA Online-kalender</H1></TD>
<TD width="400"></TD>
</TR>
</TABLE>

<!-- Indholdsfelt start -->
<TABLE WIDTH="*" HEIGHT="550" BORDER="0" CELLSPACING="0" CELLPADDING="0" bgcolor="#FFFFFF">
<TR VALIGN="top">
<TD width="150" BGCOLOR="#336699"></TD>
<TD width="20"></TD>
<TD width="330"><?php

//Print("SESSIONID= $sesid");
   
if (isSet($errMessage)) {
Print($errMessage);}

DisplayLoginForm($PHP_SELF);


?></TD>
<TD width="400"></TD>
</TR>
</TABLE>

<!-- slut -->

</BODY>
</HTML>


Her er index.php filen:

<?php
    session_start();
    $sesid = session_id();
    session_register('sesid');


if (!isset($_SESSION['user'])){
        header("location: http://www.farimagsgade.dk/riomira/login.php");
        }    else {
        if($_SESSION['uniqueid']<>$sesid){
        header("location: http://www.farimagsgade.dk/riomira/bye.php");
        }   
    }   

?>

<html>
<head>
<title>RioMira</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<frameset rows="100,*" frameborder="NO" border="0" framespacing="0" cols="*">
  <frame name="top" scrolling="NO" noresize src="top.php" >
  <frame name="main" src="calender.php">
</frameset>
<noframes><body bgcolor="#FFFFFF" text="#000000">
</body></noframes>
</html>
Avatar billede inteeeL Nybegynder
14. maj 2012 - 20:14 #1
Det er nok den mest forældede kode, jeg længe har set. Både PHP-delen og HTML-delen er valideringsmæssigt meget dårlig. Det er måske på tide at udskifte/optimere/gøre-et-eller-andet. :-)

Tilbage til problemet. if(isset($user)){ <-- er dette en indikation på $_POST['user']? Hvor er det helt præcist, det går galt?

Desuden har oprettet tråden under en forkert kategori.
Avatar billede khr02 Nybegynder
14. maj 2012 - 21:36 #2
Hej igen, tusind tak for svar! Ja det er en oldtidskode, men den har virket ok de sidste mange år ;-)

Ja hvor er det det går galt? Vi tror det er meningen at if(isset($user)){ skal tjekke om der er en user, altså om der er indtastet noget i felterne, og derefter om der er indtastet korrekt username og pass. Men den lader ikke til  at tjekke ikke noget, den redirecter bare?

Man starter på forsiden http://riomira.dk/ og logger ind i øverste venstre hjørne.

Hvis vi bibeholder loopet fra login.php
if(!isset($sesid)){
    header("location: http://www.farimagsgade.dk/ (...));
    exit;
    }

så får vi redirect problemer ml. login og index, og login siden kan ikke vises overhovedet (error). Hvis vi fjerner det, kan vi komme til login siden http://www.farimagsgade.dk/riomira/login.php

Men herfra, kan man intet, der er fortsat for mange redirects. Dvs. de første loops i disse php filer, er der noget galt med.
Vi tror det er fordi den ikke finder en user, den "bare" smider os til login igen?
Hvis der er brug for yderligere kode eller andet, sig endelig til.
Hvor skulle vi have lagt spørgsmålet?

Taktak igen!!!
Avatar billede inteeeL Nybegynder
14. maj 2012 - 22:32 #3
Jeg ser lige på det i morgen. :-)
Avatar billede khr02 Nybegynder
15. maj 2012 - 17:51 #4
1000 tak, venter spændt
Avatar billede inteeeL Nybegynder
15. maj 2012 - 22:54 #5
Prøv nedenstående (har foretaget rettelser i PHP-delen):
Login.php
<?php

session_start();
include('scr/login_inc.php');
 
if(!isset($_SESSION['sesid'])){
    header("location: http://www.farimagsgade.dk/ (...));
    exit;
}

if(isset($_POST['user'])){
    $login = loginCheck($_POST['user'], $_POST['pass'], $REMOTE_ADDR, $sesid);
    if($login > 0){
        $_SESSION['user'] = $_POST['user'];
        $_SESSION['pass'] = $_POST['pass'];
        $_SESSION['uniqueid'] = $_SESSION['sesid'];
        if($login==2){
            $_SESSION['admlevel'] = $login;
        }
        header("location: http://www.farimagsgade.dk/ (...));
        exit;
    }
    else {
        unset($_POST['user']);
        unset($_POST['pss']);
        $errMessage = "<H2>Forkert brugernavn og/eller password.<br>Prøv igen. Fejlkode: $login<br></H2>\n";
    }
}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
    <TITLE>Riomira Login</TITLE>
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<LINK HREF="matr/main.css" REL="stylesheet" TYPE="text/css">
</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#336699" VLINK="#660066" ALINK="#FF0000" TOPMARGIN="0" LEFTMARGIN="0">
<TABLE WIDTH="*" HEIGHT="101" BORDER="0" CELLSPACING="0" CELLPADDING="0" bgcolor="#FFFFFF">
<TR VALIGN="top">
<TD width="150" BGCOLOR="#336699"></TD>
<TD width="20"></TD>
<TD width="330"><H1>RIOMIRA Online-kalender</H1></TD>
<TD width="400"></TD>
</TR>
</TABLE>

<!-- Indholdsfelt start -->
<TABLE WIDTH="*" HEIGHT="550" BORDER="0" CELLSPACING="0" CELLPADDING="0" bgcolor="#FFFFFF">
<TR VALIGN="top">
<TD width="150" BGCOLOR="#336699"></TD>
<TD width="20"></TD>
<TD width="330"><?php

//Print("SESSIONID= $_SESSION['sesid']");
 
if (isSet($errMessage)) {
    Print($errMessage);
}

DisplayLoginForm($_SERVER['PHP_SELF']);

?>

</TD>
<TD width="400"></TD>
</TR>
</TABLE>

<!-- slut -->

</BODY>
</HTML>

index.php
<?php

session_start();
$_SESSION['sesid'] = session_id();

if (!isset($_SESSION['user'])){
    header("location: http://www.farimagsgade.dk/ (...));
}   
else {
    if($_SESSION['uniqueid'] == $sesid){
        header("location: http://www.farimagsgade.dk/ (...));
    } 


?>

<html>
<head>
<title>RioMira</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<frameset rows="100,*" frameborder="NO" border="0" framespacing="0" cols="*">
  <frame name="top" scrolling="NO" noresize src="top.php" >
  <frame name="main" src="calender.php">
</frameset>
<noframes><body bgcolor="#FFFFFF" text="#000000">
</body></noframes>
</html>

Jeg har ikke rettet i HTML-delen, da dette er et større arbejde. Du må selv rette dine redirects - ekspertens parser "smadrede" dem. :-)
Avatar billede khr02 Nybegynder
16. maj 2012 - 19:44 #6
Hej igen, tusind tak for koden! Tak for din tid og store arbejde!

Har indsat det, og rettet i redirects så det er fint, men efter man trykker på login feltet på forsiden riomira.dk, siger den:

Fatal error: Call to undefined function phpsession_start() in /customers/5/8/6/farimagsgade.dk/httpd.www/riomira/index.php on line 1

Er ik php haj så ved ikke om session_start() er funktion vi selv har "lavet" eller en standard php ting? I andre sprog ved jeg en funktion normalt skal defineres, men det er den her ikke vel, kan ikke se hvor? Når jeg prøver at droppe den, kommer man videre men i evighedsloop.

Ved ikke om det vil virke ellers, da jeg ik er kommet videre :-)

Tak igen!!!
Avatar billede inteeeL Nybegynder
16. maj 2012 - 19:47 #7
session_start() er en standardfunktion i PHP..
Kunne man forestille sig, at du på første linje havde følgende:
<?phpsession_start()

Du skal huske at lave et linjeskift efter <?php
Avatar billede inteeeL Nybegynder
16. maj 2012 - 20:02 #8
session_start() er en standardfunktion i PHP.
Kunne man forestille sig, at du har følgende på linje 1?
<?phpsession_start()

Du skal huske linjeskift efter <?php
Avatar billede khr02 Nybegynder
16. maj 2012 - 20:24 #9
Hej det står bare sådan her:

<?php

session_start();

altså nedenunder?
Avatar billede inteeeL Nybegynder
16. maj 2012 - 20:33 #10
Af en eller anden grund gemmer din editor det hele i en linje. Så der står <?phpsession_start. Prøv at åbne filen i notepad og gem derefter. Du skal sikre dig, at der er et mellemrum eller linjeskift efter <?php
Avatar billede khr02 Nybegynder
17. maj 2012 - 11:05 #11
Hej igen, du har ret, det var mellemrum! Dumt at arb på både mac og pc, og forskellige text edit ting. Nu ser det sgu ud til at virke, og vi siger 1000 tak. Du er bare God!

Vi endte med at fjerne dette fra index.php, da den smed os ud lige efter et korrekt login: else {
    if($_SESSION['uniqueid'] == $sesid){
        header("location: http://www.farimagsgade.dk/riomira/bye.php");
    } 


Nu virker det og alt er godt, du får selvfølgelig de 30 point, men vi vil meget gerne give dig flere, ved bare ikke hvordan? :-)
Avatar billede inteeeL Nybegynder
17. maj 2012 - 13:57 #12
Jeg er glad for, at det virker nu. Forstod heller ikke helt det session-tjek, der foretages der, så der sker ikke noget specielt ved at fjerne det. Og det var så lidt. :)

De 30 point er helt fint, jeg takker. God forlænget weekend. :-)
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
Kurser inden for grundlæggende programmering

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