tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
508
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    BitMan BitMan ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Ort
    Eschweiler
    Beiträge
    189
    Guten Morgen Leute.

    um Fotos meines Hobbies als Digitaler Bilderknipser nur bestimmten Leute über die Websete verfügbar zu machen, will ich ein Logon Skrip mit User-Datenbank und Gruppen bauen.

    Also Session!

    Aber da kommt auch schon das erst Problem auf. Die Session funktioniert, ich kann mit richtigem Pass und User anmelden, falsche werden abgewiesen.

    SAFE MODE is on und Globals sind off. Ist ein Vserver bei Strato.

    Nun verliere ich aber nach dem Anmelden die Session Vars.

    Hier findet Ihr die Testseite(nicht über den Aufbau meckern, der ist noch eintönig, nur zum Testen) -> die Test-Seite

    Mit benutzer und passwort test könnt ihr die Anmeldung testen.

    ich will hier keine riesigen Spurcen Posten, deswegen verzeiht mir bitte den RAR LinK: Sourcen

    Ich bin C/C++ Prgrammierer, mach auch C# und VB/VBA. Mit PHP hab ich bisher nur kleine Skripte gemacht, mal ein Verzeichnis lesen, Slide-Show, Mailforms, etc. Nun gehts tiefer.

    Hoffe einer von Euch findet ein paar Minuten und kann mir sagen wo mein Denkfehler ist.

    Wer mag kann ja mal rein schauen(Meine Bilder) was ich so knipse, aber da sind nur die Bilder wo ich keine Persönlichkeitsrechte verletze, alle anderen wie Akt und Portät muss ich vor ungewünschten Zugriffen schützen. .

    Salü
    BitMan
     

  2. #2
    sufijen sufijen ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    236
    Also bei mir bleibt die session anscheinend....

    Hast du überall session_start() ganz oben?

    Hast du Cookies aktiviert?
     

  3. #3
    spikaner spikaner ist offline Quereinsteiger @ php
    Registriert seit
    Feb 2007
    Ort
    München
    Beiträge
    439
    Hab es nur mal kurz überflogen.. is ja auch net gerade klein , kann es sein das du in manchen seiten das session start vergisst.. bzw ich würde das über eine checkuser.php machen in der dann sowas in der art steht...
    PHP-Code:
    <?php 
    session_start 
    (); 
    if (!isset (
    $_SESSION["user_id"])) 

      
    header ("Location: formular.php");

    ?>
    und die bei jeder seite includen wo du "absichern" willst
    bsp
    PHP-Code:
    include ("checkuser.php");
    if (
    $_SESSION["user_bestaetigt"] == "nein"

      echo 
    '<div style="color:red;">Du bist kein Uploader!<a href="logout.php" >Weiter!!<br><br></div>';
      die; 

    so in etwa würds ich machen..

    mfg Spikaner
    Geändert von spikaner (22.10.07 um 14:05 Uhr)
     

  4. #4
    BitMan BitMan ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Ort
    Eschweiler
    Beiträge
    189
    Hi Sufijen, Hi Spikaner,

    vielleicht habe ich mein Problem nicht effektiv geschildert.
    Die Session Variable bleibt bestehen. Aber nach der Anmeldung ist anstatt der Felder nur noch ein Button, der keine weitere Funktion besitzt. Wenn man darauf klickt soll der natürlich das Form neu aufbauen, was bedeutet das die index.php noch einmal geladen wird und als erstes Session ID, SessionUser und Session Part einliest um diese explizit bei jedem Aufruf der index.php, also bei jedem Klick zu prüfen.

    Da ich alles über die Index PHP steuere, alle anderen *.php nur als include/require von if/else geladen wird, ist sicher nur der folgende Teil relevant:

    PHP-Code:
    $test true;
        
    //*** HTTP-Header-Vares einlesen
        
    if(isset($HTTP_POST_VARS['UserBoxName']))        $UserBoxName $HTTP_POST_VARS['UserBoxName'];
        if(isset(
    $HTTP_POST_VARS['UserBoxPass']))        $UserBoxPass $HTTP_POST_VARS['UserBoxPass'];
        
        
    //*** Session setzen
        
    if(!isset($SessID))
        {    
            
    session_start();    
            
    $SessID session_id();
            
    session_register("SessID",session_id());
        }
            
        if(!isset(
    $_SESSION["SessUser"]))        
        {
            
    $SessUser "Gast";
            
    session_register("SessUser",$SessUser);
        }
        else
        {
            
    $SessUser $_SESSION["SessUser"];
        }
        if(!isset(
    $_SESSION["SessUserSessPass"]))
        {
            
    $SessPass "Passwort";
            
    session_register("SessPass",$SessPass);
        }
        else
            
    $SessPass $_SESSION["SessUserSessPass"];
        
        include(
    "FUNC_DatenBank.php"); 
    Irgendwie verliert mein Script den User und das Passwort, nach erfolgreichen Anmeldung, wenn man den verbleibenden Button klickt, der quasi später mal genutzt wird um Seiteninhalte auf zu rufen, ...

    LG BitMan
     

  5. #5
    spikaner spikaner ist offline Quereinsteiger @ php
    Registriert seit
    Feb 2007
    Ort
    München
    Beiträge
    439
    Also hier mal ein beispiel
    login.php
    PHP-Code:
    <?php 
    // Session starten
    session_start ();
    require (
    "config.php");

    // Datenbankverbindung aufbauen 
    $connectionid mysql_connect ($mysql_host$mysql_user$mysql_pw); 
    if (!
    mysql_select_db ($mysql_db$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 

    // Db abfrage
    $sql "SELECT "
        
    "Id, Nickname, email, Vorname, bestaetigt, admin "
      
    "FROM "
        
    "benutzerdaten "
      
    "WHERE "
        
    "(Nickname like '".$_REQUEST["name"]."') AND "
        
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
    $result mysql_query ($sql); 

    if (
    mysql_num_rows ($result) > 0

    // Benutzerdaten in ein Array auslesen. 
      
    $data mysql_fetch_array ($result);
    // var_dump($result);
    // var_dump($data); 

      // Sessionvariablen erstellen und registrieren 
      
    $_SESSION["user_id"] = $data["Id"]; 
      
    $_SESSION["user_nickname"] = $data["Nickname"]; 
      
    $_SESSION["user_email"] = $data["email"]; 
      
    $_SESSION["user_vorname"] = $data["Vorname"]; 
      
    $_SESSION["user_bestaetigt"] = $data["bestaetigt"];
      
    $_SESSION["user_admin"] = $data["admin"];
      
    header ("Location: upload1.php"); 

    else 

      
    header ("Location: formular.php?fehler=1"); //anderfalls mit fehlermeldung zurück zum Loginscript.

    ?
    und die dazugehörigrige formular.php
    PHP-Code:
    <?php session_start (); ?>
    <html> 
    <head> 
      <title>Login</title> 
    </head> 

    <body> 
    <?php 
    if (isset ($_REQUEST["fehler"])) 

      echo 
    "Die Zugangsdaten waren ungültig, oder du bist noch nicht freigeschaltet worden"

    ?>
    <div align="center"></br>Uploader Login</br></br></br>
        </p>
        <table border="1" width="160" bordercolorlight="#808080" bgcolor="#C0C0C0">
            <tr>
                <td><form action="login.php" method="post"> Name: <input type="text" name="name" size="20"></td>
            </tr>
            <tr>
                <td> Kennwort: <input type="password" name="pwd" size="20"></td>
            </tr>
            <tr>
                <td><input type="submit" value="Login"></form></td>
            </tr>
        </table>
    </div>
    </body> 
    </html>
    hoffe das filft dir etwas weiter

    mfg Spikaner
     

  6. #6
    BitMan BitMan ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Ort
    Eschweiler
    Beiträge
    189
    Danke, soweit ist das ein gutes Beispiel. Aber damit weis ich immer noch nicht warum mein Skript die Session-Variablen verliert.
     

  7. #7
    Registriert seit
    Mar 2002
    Ort
    Stuttgart (Baden-Württemberg)
    Beiträge
    984
    Blog-Einträge
    7
    Woher kommt die Variable $SessID in deinem Script?
    PHP-Code:
        //*** Session setzen
        
    if(!isset($SessID))
        {    
            
    session_start();    
            
    $SessID session_id();
            
    session_register("SessID",session_id());
        } 
    Desweiteren sind session_register() und die $HTTP_*_VARS veraltet und sollten durch $_SESSION bzw. $_POST, $_GET, $_COOKIE, $_SERVER, $_REQUEST, etc. ersetzt werden.
    Und das session_start() nicht in eine if-Bedingung, sondern einfach in die allererste Zeile deiner index.php, so dass es immer, _immer_ ausgeführt wird!

    Nachtrag
    PHP-Code:
    // Alt, bitte nicht mehr machen
    $name "Foo";
    session_register("name");

    // Neu, so wirds mittlerweile gemacht
    $_SESSION["name"] = "Foo"
     
    Gruß mAu


    ──────────────────────────
    Ich auf flickr

    * Unformatierten Quellcode schaue ich mir _nicht_ an!
    * Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
    * Bitte die Netiquette beachten.
    * Vergesst nicht, beantwortete Fragen als erledigt zu markieren!


  8. #8
    Acriss Acriss ist offline Mitglied Platin
    Registriert seit
    Jun 2007
    Ort
    Lingen (Niedersachsen, zZ in Istanbul)
    Beiträge
    685
    İch glaube ich habe was gefunden:
    PHP-Code:
     //*** Session setzen
        
    if(!isset($SessID))
        {    
            
    session_start();    
            
    $SessID session_id();
            
    session_register("SessID",session_id());
        } 
    Ersetze das mal durch
    PHP-Code:
    session_start();    
    //*** Session setzen
        
    if(!isset($SessID))
        {    
            
    $SessID session_id();
            
    $_SESSION['SessID'] = $SessID//Neu
            // session_register("SessID",session_id()); Schon alt
        

     

  9. #9
    BitMan BitMan ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Ort
    Eschweiler
    Beiträge
    189
    Hey Leute,

    danke für die Hilfe. Aber irgendwie will es nicht.

    Ich habe nun veraltete Syntax durch neue ersetzt und den gleichen Effekt.

    Um alle anderen Fehlerquellen aus zu schließen hab ich das mal auf die Session reduziert:

    PHP-Code:
    session_start();
        
    $SessId session_id();
        
        if(!isset(
    $session["SessUser"]))
            
    $SessUser "Gast-Benutzer";
            
        if(!isset(
    $session["SessPass"]))
            
    $SessPass "Gast-Passwort";
            
        if(  
    $SessUser=="Gast-Benutzer"  &&  $SessPass=="Gast-Passwort"  )
        {
            echo 
    "Anmelden<br>";
            
    $session["SessUser"] = "test";
            
    $session["SessPass"] = "test";
        }
        else
        {
            
    $SessUser $session["SessUser"];
            
    $SessPass $session["SessPass"];
            echo 
    "Sess-User prüfen";
        }
        
        echo 
    "Session ".$SessId."<br>";
        echo 
    "User ".$SessUser."<br>";
        echo 
    "Passwort ".$SessPass."<br>"
    Nun sollte die Seite beim ersten Auruf den User Gast mit Passwort ausspucken und nach einem Refresh dann den User Test. Aber nach dem Refresh steht immer noch der Gastuser drin. Ich denke ich übersehen nur eine Kleinigkeit, die so simple ist das sie auch Euch nicht auffält Sicher nur ein generelles Verständnis Problem.

    LG BitMan
     

  10. #10
    Registriert seit
    Mar 2002
    Ort
    Stuttgart (Baden-Württemberg)
    Beiträge
    984
    Blog-Einträge
    7
    Wo ist der Unterstrich?
    PHP-Code:
    // Nein
    $session["SessPass"]

    // Ja, Dollarzeichen, Unterstrich und groß bitte
    $_SESSION["SessPass"
     
    Gruß mAu


    ──────────────────────────
    Ich auf flickr

    * Unformatierten Quellcode schaue ich mir _nicht_ an!
    * Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
    * Bitte die Netiquette beachten.
    * Vergesst nicht, beantwortete Fragen als erledigt zu markieren!


  11. #11
    BitMan BitMan ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Ort
    Eschweiler
    Beiträge
    189
    *autsch* ist ja schon peinlich. KLar, so wie ich das geschrieben habe wars keine Session Var. Danke.
     

Ähnliche Themen

  1. Array in Session verliert Werte
    Von boykottke im Forum PHP
    Antworten: 10
    Letzter Beitrag: 25.03.08, 12:29
  2. Flash verliert Variablen während einer Rekursion,...
    Von Marius Heil im Forum Flash Plattform
    Antworten: 12
    Letzter Beitrag: 30.10.07, 13:08
  3. Antworten: 4
    Letzter Beitrag: 08.12.06, 18:07
  4. Antworten: 12
    Letzter Beitrag: 11.05.05, 21:05
  5. Tutorial nicht verstanden ;(
    Von ZipZek im Forum Photoshop
    Antworten: 7
    Letzter Beitrag: 20.08.02, 17:51