php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.05.2009, 17:34  
Benutzer
 
Registriert seit: 01.11.2008
Beiträge: 46
haiyyu befindet sich auf einem aufstrebenden Ast
haiyyu eine Nachricht über ICQ schicken haiyyu eine Nachricht über Skype™ schicken
Standard Problem mit Sessions

Hi,
ich habe mir gerade ein Tutorial zum Thema Sessions angeguckt und alles so wie beschreiben gemacht. Nun habe ich folgenden Code:
login.php
PHP-Code:
<!DOCTYPE HTML>
<
html>
    <
head>
        <
title>
            
Admin-Login
        
</title>
    </
head>
    <
body>
        <
form action="admin/index.php" method="post">
            <
table>
                <
tr>
                    <
td>
                        
Passwort:
                    </
td>
                    <
td>
                        <
input name="pass" type="password" />
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        <
center>
                            <
input name="send" type="submit" value="Einloggen" />
                        </
center>
                    </
td>
                </
tr>
            </
table>
        </
form>
    </
body>
</
html
admin/index.php
PHP-Code:
<?php
    
/* Session */
    
$pw "testpw";
    if (
$_REQUEST['send'] && $_REQUEST['pass'] == $pw
    {
        
session_start();
        
session_register('pass');
        
$_SESSION['pass'] = $pw;
    }
?>
<html>
    <head>
        <title>
            Admin-Bereich
        </title>
    </head>
    <body>
        <?php
            
if ($_SESSION['pass'] == $pw)
            {
                echo 
"Eingeloggt";
            }
            else
            {
                echo 
"Nicht eingeloggt.<br />Falsches Passwort?";
            }
        
?>
    </body>
</html>
Doch nun das Problem: Auch wenn ich im Formular der login.php 'testpw' eingebe, bekomme ich auf der admin/index.php nur
Zitat:
Nicht eingeloggt
Falsches Passwort?
ausgegeben
Wisst ihr, woran das liegt?
haiyyu ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.05.2009, 18:13  
Benutzer
 
Registriert seit: 01.11.2008
Beiträge: 46
haiyyu befindet sich auf einem aufstrebenden Ast
haiyyu eine Nachricht über ICQ schicken haiyyu eine Nachricht über Skype™ schicken
Standard

Ich habe es nun so gelöst (admin/index.php):
PHP-Code:
<?php
    
/* Session */
    
$pw "testpw";
    
//if (isset($_POST['send']) && $_POST['pass'] == $pw)
    
if (isset($_POST['pass']))    
    {
        if (
$_POST['pass'] == $pw)
        {
            
session_start();
            
$_SESSION['pass'] = $pw;
        }
    }
?>
<html>
    <head>
        <title>
            Admin-Bereich
        </title>
    </head>
    <body>
        <?php
            
if ($_SESSION['pass'] == $pw)
            {
                echo 
"Eingeloggt";
            }
            else
            {
                echo 
"Nicht eingeloggt.<br />Falsches Passwort?";
            }
        
?>
    </body>
</html>
__________________
haiyyu ist offline  
Alt 10.05.2009, 18:17  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

session_start();ganz an den Anfang des Scripts !

Was ist an Deinem Problem "fortgeschritten" ???
Koala ist gerade online  
Alt 10.05.2009, 18:34  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

[MOD: verschoben]
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 10.05.2009, 19:14  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

Zitat:
Zitat von Koala Beitrag anzeigen
session_start();ganz an den Anfang des Scripts !

Was ist an Deinem Problem "fortgeschritten" ???
Für einen Fortgeschrittene erwarte ich auch einen aussagekräftigeren Titel.
PTC ist offline  
Alt 10.05.2009, 19:54  
Benutzer
 
Registriert seit: 01.11.2008
Beiträge: 46
haiyyu befindet sich auf einem aufstrebenden Ast
haiyyu eine Nachricht über ICQ schicken haiyyu eine Nachricht über Skype™ schicken
Standard

Hm,
nun habe ich ein weiteres Problem.
Und zwar komme ich rein, egal ob das PW richtig oder falsch ist.
Hier meine 2 Dateien:
acp/index.php
PHP-Code:
<?php
    
/* Session */
    
session_start();
    
$pw "testpw";
    if (isset(
$_POST['pass']))    
    {
        if (
$_POST['pass'] == $pw)
        {
            
session_unset();
            
$_SESSION['pass'] = $pw;
        }
    }
    if (
$_SESSION['pass'] != $pw)
        
header("location: ../login.php");
    else
        include 
"admin.php";
?>
acp/admin.php
PHP-Code:
<!DOCTYPE HTML>
<?php
    
if ($_SESSION['pass'] != $pw
        
header("location: ../login.php");
    else
    {
?>
 // HTML Code
<?php
    
}
?>
Woren könnte das liegen?
__________________
haiyyu ist offline  
Alt 10.05.2009, 20:54  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

- fehlendes session_start
- Code vor session_start
- $pw nicht definiert
- Code vor header
- much more…
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 10.05.2009, 21:06  
Erfahrener Benutzer
 
Benutzerbild von Felk
 
Registriert seit: 23.02.2009
Beiträge: 235
PHP-Kenntnisse:
Fortgeschritten
Felk befindet sich auf einem aufstrebenden Ast
Felk eine Nachricht über MSN schicken Felk eine Nachricht über Skype™ schicken
Standard

Also dein Code ist auch ein wenig unsinnig, denn das Passwort wird mehrmals geprüft.
Ich hab den Code von admin.php mal an die entsprechende Stelle platziert um den Codeaufbau zu verdeutlichen:

PHP-Code:
<?php 
    
/* Session */ 
    // Session wird gestartet, soweit sogut
    
session_start(); 
    
// pw wird festgelegt
    
$pw "testpw"
    if (isset(
$_POST['pass']))     
    { 
        if (
$_POST['pass'] == $pw
        { 
            
// Wenn die POST-Variable gesetzt ist und das Passwort stimmt, dann wird die session geleert und das richtige Passwort in ihr gespeichert
            
session_unset(); 
            
$_SESSION['pass'] = $pw
        } 
    } 
    
// Wozu hier das Passwort prüfen, wenn du zuvor das richtige passwort eingespeichert hast? Bedenke, dass du zuvor $_SESSION['pass'] den Wert von $pw zugewiesen hast
    // Diese IF-Abfrage ist immer ungültig, wenn der vorherige Codeblock irgendwann einmal (und die SESSION noch gilt) ausgeführt wurde
    
if ($_SESSION['pass'] != $pw
        
header("location: ../login.php"); 
    else {
        
// diverses HTML ausgeben
        
?>
        <!DOCTYPE HTML> 
        <?php 
            
// Diese IF-Abfrage ist auch immer ungültig, wenn... (siehe 1. IF-Abfrage)
            
if ($_SESSION['pass'] != $pw)  
                
// Dieser Code wird nie ausgeführt, wenn... (siehe 1. IF-Abfrage)
                
header("location: ../login.php"); 
            else 
            { 
                
?> 
                // HTML Code 
                <?php 
            
}
    }
?>
Also kannst du z.B: in der Session auch einen benutzernamen speichern, denn sobald die Session gesetzt ist, ist der Benutzer eingeloggt.
Außerdem solltest du mal temporäre Cookies löschen, aber den Fehler habe ich nicht direkt gefunden, sorry!


EDIT: Okay, nikosch hats gefunden. Natürlich, du darfst in admin.php natürlich orher keine Ausgaben ect. haben
__________________
www.Speedcube.de, werde Speedcubing Meister! (Rubik's Cube lösen)
Felk ist offline  
Alt 10.05.2009, 22:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
EDIT: Okay, nikosch hats gefunden. Natürlich, du darfst in admin.php natürlich orher keine Ausgaben ect. haben
So wie Du, meinst Du?

Zitat:
PHP-Code:
 <!DOCTYPE HTML> 
        <?php 
            
// Diese IF-Abfrage ist auch immer ungültig, wenn... (siehe 1. IF-Abfrage)
            
if ($_SESSION['pass'] != $pw)  
                
// Dieser Code wird nie ausgeführt, wenn... (siehe 1. IF-Abfrage)
                
header("location: ../login.php");
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Sicherheitsfrage mit Sessions - Problem mit Intellitamper Leibi PHP-Fortgeschrittene 26 03.07.2008 12:38
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
sessions problem 022.9 PHP Tipps 2006 5 19.06.2006 18:13
problem bei sessions in komb. m. cookies. header umgehen? Promaetheus PHP Tipps 2006 10 02.05.2006 15:52
Ewiges Problem mit den Sessions / Warenkorb max-dhom PHP Tipps 2006 12 13.04.2006 18:04
Cookies, Sessions, Login-Fehler PHP Tipps 2006 1 23.03.2006 12:59
Sessions Problem Mehrseitiges Formular PHP Tipps 2006 6 02.02.2006 18:59
[Erledigt] Riesiges Problem mit Sessions PHP Tipps 2005 3 30.04.2005 01:47
Problem bei einer If-Abfrage mit Sessions maximus PHP Tipps 2005 12 30.04.2005 01:36
Problem mit Sessions seit Upgrade auf PHP 4.3.10 PHP Tipps 2005 7 09.03.2005 01:29
Problem mit Sessions unter PHP 4.3.10 PHP Tipps 2005 2 22.02.2005 23:14
Problem mit Sessions PHP Tipps 2005 2 10.02.2005 11:57
Proble mit Sessions PHP Tipps 2005 7 07.02.2005 17:42
Problem mit "Keksen" bei Sessions? PHP-Fortgeschrittene 4 17.09.2004 00:05
PHP Serverpfad Problem mit Sessions PHP Tipps 2004 2 05.08.2004 18:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
session_start(); if ($_session [pass]==, php mehrseitiges formular session, session_unset(); platzieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum