kostenloser Webspace werbefrei: lima-city


Session-Inhalt verschwindet

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. h**s

    ich dachte man müsse nur htmlspecialchars und stripslashes verwenden wenn magic_quotes_gpc on ist.
    also bei stripslashes mag das sein, aber was sollte htmlspecialchars bzw htmlentities damit zu tun haben ?

    aber da das, weil off, ja auch nicht die ursache sein kann bin ich sehr interessiert was die profis zu dem phänomen sagen... kannst ja mal "hackyourlife" fragen, ich denke der ist auch mod für diesen bereich...
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    xxxparenjxxx

    xxxparenjxxx hat kostenlosen Webspace.

    hcms schrieb:
    aber was sollte htmlspecialchars bzw htmlentities damit zu tun haben ?.

    Weiß ich nicht. hab es irgendwo mal gesehen, deswegen hab ich das geschrieben. Vllt wurden die ja bei was anderem verwendet. Kann mich auch irren ^^

    Ja ist schon recht seltsam. Weil auf deinen Webspace leuft es ja und der ist ja genauso hier wie meiner.
    Soll ich dem mod. einfach ne pm schicken? Oder wie meinst das?
  4. xxxparenjxxx schrieb:
    ...
    Wenn ich die Seite aufrufe Spuckt der mir noch sowas hier aus:

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/webpages/lima-city/xxxparenjxxx/html/TESTPAGE/login.php:1) in /home/webpages/lima-city/xxxparenjxxx/html/TESTPAGE/login.php on line 11


    ---> headers already sent

    also ... das deutet mit ziemlicher Sicherheit darauf hin,
    dass vor
    session_start();
    schon eine Ausgabe an den Browser raus geht ... !!!

    a) hast Du vielleicht vor dem <?php ganz oben in der Datei
    noch ein Leerzeichen oder eine Leer-Zeile ?

    b) wird die Datei login.php direkt aufgerufen,
    oder per include() in einer anderen Datei (z.B. index.php) geladen ?

    wenn b)
    dann darf auch auch in dieser Datei mit dem include() keine vorher Ausgabe
    an den Browser ausgegeben werden, auch kein Leer-Zeichen oder Leer-Zeile !!!

    EDIT: ... hab da eine Ahnung ...
    ........ hast Du in Deinem Code irgendwo ein session_destroy() ... z.B. am Ende der Datei
    welches bei jedem Seiten-Aufruf ausgeführt wird (und nicht nur bei LogOut Aktion) ???
    ... das wäre eine (mögliche) Erklärung


    bitte übernehme mal folgenden CODE als neue Datei logintest.php

    zum einfacher Kopieren hier als RAW Code: http://pastebin.com/raw.php?i=CmR3KLxH

    <?php 
    // ------------------------------------------------- 
    
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    
    $runfile = $_SERVER['PHP_SELF']; 
    ## $runfile = 'logintest.php'; 
    
    $runtime = time(); 
    
    // ------------------------------ SESSION START ---- 
    
    ## session_name("usr_login"); 
    
    session_start(); 
    
    // ------------------------------ ZUGANGS DATEN ---- 
    
    $testdata['user'] = 'test'; 
    $testdata['pass'] = '123'; 
    
    $secret_salt = 'u5Rt2WnB4k'; 
    
    $check_key = md5($testdata['user'].$secret_salt.$testdata['pass']); 
    
    // ------------------------------------------------- 
    
    if (!empty($_POST['name']) && !empty($_POST['password'])) { 
    	
    	$user_name = trim($_POST['name']); 
    	$user_pass = trim($_POST['password']); 
    	
    	$login_key = md5($user_name.$secret_salt.$user_pass); 
    	
    	if ($login_key == $check_key) {  // ---- Log-In = OK  !!! 
    		$_SESSION['loginkey'] = $login_key; 
    		$_SESSION['username'] = $user_name; 
    		$_SESSION['log_time'] = date('Y-m-d H:i:s',$runtime); 
    	}
    	else { 
    		session_unset(); 
    		session_destroy(); 
    	} 
    
    } 
    
    // ------------------------------------------------- 
    
    if (!empty($_REQUEST['seite'])) { 
    	$run_seite = trim($_REQUEST['seite']); 
    } 
    else { 
    	$run_seite = 'start'; 
    } 
    
    // ------------------------------------------------- 
    
    if ($run_seite == 'logout') {   // ---- Log-Out Aktion !!! 
    	session_unset(); 
    	session_destroy(); 
    } 
    
    // ------------------------------------------------- 
    
    $session_info = array(); 
    $session_info['session_id']   = session_id(); 
    $session_info['session_name'] = session_name(); 
    $session_info = array_merge($session_info, session_get_cookie_params()); 
    
    
    // ------------------------------------------------- 
    
    function debug_print($var, $name) { 
    	
    	print "<br />### DEBUG ### <strong style=\"color:red;\">".$name."</strong> ###\n"; 
    	print "<br />\n"; 
    	print "<br />\n"; 
    	
    	print "<pre style=\"margin:6px; padding:4px; text-align:left; background:#DEDEDE;\">\n"; 
    	print_r($var); 
    	print "</pre>\n"; 
    	
    	print "<br />\n"; 
    	print "<br />\n";
    
    }
    
    // ------------------------------------------------- 
    ?>
    <!DOCTYPE html>
    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Login Test</title>
    </head>
    
    <body>
    
    <h1>Login Test</h1>
    
    <hr />
    
    <p>--- <a href="<?php echo $runfile; ?>?seite=start">HOME</a> --- </p>
    
    <?php 
    // ------------------------------------------------- 
    
    if (isset($_SESSION['loginkey']) && $_SESSION['loginkey'] == $check_key) { 
    
    // ------------------------------------------------- 
    ?>
    
    <p>&nbsp;</p>
    <p>Hallo USER: <strong style="font-size:28px;"><?php echo $_SESSION['username']; ?></strong> !!!</p>
    <p>Du bist jetzt eingeloggt .... Aktuelle Seite: <strong style="color:darkgreen;"><?php echo $run_seite; ?></strong></p>
    <p>&nbsp;</p>
    <p>MENU --- <a href="<?php echo $runfile; ?>">HOME</a> --- <a href="<?php echo $runfile; ?>?seite=test">TEST</a> --- <a href="<?php echo $runfile; ?>?seite=logout" style="color:red;">LOGOUT</a> ---</p>
    <p>&nbsp;</p>
    
    <?php 
    // ------------------------------------------------- 
    
    
    print "<br />\n"; 
    print "<br />... DEBUG ... nach dem LOGIN ...\n"; 
    print "<br />\n";
    
    debug_print($session_info, '$session_info'); 
    
    debug_print($_SESSION, '$_SESSION'); 
    
    print "<br />\n"; 
    print "<br />\n"; 
    
    }
    else { 
    
    // ------------------------------------------------- 
    ?>
    
    <p>Logge dich ein !</p>
    
    <pre style="margin:6px; padding:4px; width:250px; text-align:left; background:#FFFFCC; border: 1px solid #AAAAAA;">
      Username = <strong style="color:darkgreen;"><?php echo $testdata['user']; ?></strong>
      Passwort = <strong style="color:darkgreen;"><?php echo $testdata['pass']; ?></strong>
    </pre>
    
    <hr />
    
    <form action="<?php echo $runfile; ?>" method="post" />
    	<p>Username: <input type="text" name="name" /></p>
    	<p>Passwort: <input type="password" name="password" /></p>
    	<p><input type="hidden" name="seite" value="start" /> 
    	&nbsp;&nbsp; OK: &nbsp; <input type="submit" name="submit" value="Einloggen" /></p>
    </form>
    
    <hr />
    
    <?php 
    // ------------------------------------------------- 
    
    print "<br />\n"; 
    print "<br />... DEBUG ... vor dem LOGIN ...\n"; 
    print "<br />\n";
    
    debug_print($session_info, '$session_info'); 
    
    debug_print($_SESSION, '$_SESSION'); 
    
    print "<br />\n"; 
    print "<br />\n"; 
     
    
    }
    
    // ------------------------------------------------- 
    ?>
    
    <p>&nbsp;</p>
    
    </body>
    
    </html>


    damit sollte es (endlich) funktionieren, hab's auch auf meinem Lima-City Webspace getestet.
    ... nicht vergessen: aufpassen, dass Du kein Leerzeichen / keine Leer-Zeile am Anfang hast :)

    Und BITTE sreibe dann hier den Link zum TEST .. wie: http://xxxparenjxxx.lima-city.de/login.php
    damit wir auch den Test machen können und evtl Fehlermeldungen sehen können.

    wenn es damit auf Deinem Lima-City Webspace (wieder) nicht funktioniert,
    dann könntest Du auch ein hilfe/support" title="Support">Support-Ticket auf machen, um das Problem zu klären.
    Vielleicht hat sich ja in Deinem Webspace ein (SESSION) Fehler eingeschlichen :(



    Beitrag zuletzt geändert: 8.3.2013 11:49:50 von webmag
  5. Autor dieses Themas

    xxxparenjxxx

    xxxparenjxxx hat kostenlosen Webspace.

    @ webmag

    Danke für die Hilfe, aber der funzt leider trotzdem nicht.
    Du schreibst dass session_start ganz am Anfang stehen muss, hast es selbst aber auch nicht ganz am Anfang stehen dadurch kommen wieder diese besagten Fehlermeldungen. ich habe jetzt deinen code mal unverändert gelassen.
    hier kann man den asprobieren: http://xxxparenjxxx.lima-city.de/logintest.php

    würde man jetzt session_start(); vor error_reporting(E_ALL); setzen würden lediglich die Fehlermeldungen:

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/webpages/lima-city/xxxparenjxxx/html/TESTPAGE/logintest.php:1) in /home/webpages/lima-city/xxxparenjxxx/html/TESTPAGE/logintest.php on line 16

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/webpages/lima-city/xxxparenjxxx/html/TESTPAGE/logintest.php:1) in /home/webpages/lima-city/xxxparenjxxx/html/TESTPAGE/logintest.php on line 16

    verschwinden.
    Aber beim Neuladen der Seite werden trotzdem die session-Daten zurückgesetzt.

    Werde jetzt mal schauen dass ich nen Ticket anlege.
    Denn wie man hier: http://hcms.12hp.at/session/
    sieht, funktioniert es.

    Auf meinem Webspace: http://xxxparenjxxx.lima-city.de/login.php
    MIT DEM SELBEN CODE
    Funktioniert es nicht.
    Also muss da irgendwas am Webspace liegen.

    Vielen Dank für die Hilfe werde mich melden sobald ne Antwort vom Ticket habe (oder es nicht schaffe eins anzulegen weil kp wie das geht hehe)

    mfg, Michl
  6. xxxparenjxxx schrieb:
    ... Du schreibst dass session_start ganz am Anfang stehen muss, hast es selbst aber auch nicht ganz am Anfang stehen dadurch kommen wieder diese besagten Fehlermeldungen.


    NEIN ... session_start() muss nicht ganz am Anfang stehen,
    sondern einfach aufgerufen werden noch bevor irgend eine Ausgabe an den Browser gesendet wird,

    das wäre falsch: und erzeigt Fehler: headers already sent
    <?php 
    
    echo "Hallo Welt \n"; 
    session_start(); 
    
    // --- weiterer Code .... 
    ?>


    das wäre richtig:
    <?php 
    
    $info = '"Hallo Welt'; 
    session_start(); 
    echo $info ."\n"; 
    
    // --- weiterer Code .... 
    ?>


    also man kann vor session_start() alles machen, was KEINE Ausgabe (im Browser) erzeugt.

    deshalb kann session_start(); auch nach error_reporting() stehen ...

    xxxparenjxxx schrieb:
    ich habe jetzt deinen code mal unverändert gelassen.
    hier kann man den asprobieren: http://xxxparenjxxx.lima-city.de/logintest.php
    ...


    NAJA ... irgenwas scheint ja doch "anders" zu sein,
    bei mir und bei @hcms geht es ja auch ... siehe: http://webmag.lima-city.de/test/logintest.php

    wie gesagt, ich vermute, Du hast bei durch Copy-Paste und Datei speichern
    ausversehen ganz oben ein Leerzeichen oder eine Leer-Zeile mit drin hast ... ?!

    Du darfst es auch NICHT so machen:
    session_start(); 
    <?php 
    $info = '"Hallo Welt'; 
    echo $info ."\n"; 
    // --- weiterer Code .... 
    ?>


    aber das sollte klar sein :)


    xxxparenjxxx schrieb:
    Auf meinem Webspace: http://xxxparenjxxx.lima-city.de/login.php
    MIT DEM SELBEN CODE
    Funktioniert es nicht.
    Also muss da irgendwas am Webspace liegen.
    ...


    bist Du Dir gaaaaaaaanz sicher das es "MIT DEM SELBEN CODE" ist ???
    ... also kein Leerzeichen oder Leerzeile vor dem <?php .... ???

    oder hast Du eine .htaccess auf Deinem Webspace
    (in der evtl. Session / Cookie Einstellungen geändert werden)

    Wenn ja, sicher der SELBE CODE und keine Änderungen per .htaccess (oder php.ini)
    dann solltest Du ein Ticket an den Support schreiben. (Lima-City --> Hilfe -->Supportticket)
    ... am besten (neben Problem-Beschreibung im Ticket) auch mit Link zu diesem Beitrag.

    um sicher zu gehen (um es uns zu beweisen, das es der SELBEN CODE ist)
    kannst Du Deine logintest.php ja auch nochmal Speichern unter logintest.php.txt
    hochladen und und hier verlinken, dann können wir den Quellcode sehen
    ... meine Datei siehe hier: logintest.php.txt

    wäre schon sehr seltsam,
    wenn auf unserem Webspace SESSION funktioniert, aber auf Deinem nicht ?!
    .... ist doch das selbe PHP-System ... gleicher Server ?!


    +++ EDIT +++
    MOOOOOoooOOOOOOooMENT mal ...

    Deine Datei wird aufgerufen mit: http://xxxparenjxxx.lima-city.de/logintest.php

    Aber die Fehlermeldung sagt, die Datei liegt noch in einem Unterorder TESTPAGE/

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/webpages/lima-city/xxxparenjxxx/html/TESTPAGE/logintest.php:1) in /home/webpages/lima-city/xxxparenjxxx/html/TESTPAGE/logintest.php on line 16


    !!! ?? wo kommt dieser Ordner TESTPAGE her ?? !!

    Das ist ja nur möglich, wenn Du irgendwas von diesem Verzeichnis includest
    oder wenn die Datei logintest.php im Ordner TESTPAGE liegt
    aber per .htaccess und Rewrite zum Haupt-Verzeichnis umgeleitet wird

    .... also hast Du doch eine .htacces ???? .... oder machst irgendwo include() ... ????

    ---> in welchem Ordner hast Du die logintest.php per FTP hochgeladen

    Wenn Du im FTP keine .htaccess siehst, kann trotzdem eine vorhanden sein,
    manche FTP-Programme zeigen .htaccess Datei nicht an

    ... erstelle mal eine komplette leere (Text) Datei und Umbenennen in .htaccess
    (wirklich nur ".htaccess" mit dem Punkt vorne und ohne .txt hinten dran !)
    und lade diese, sowie die logintest.php in Deinem Hauptverzeichnis hoch.

    oO:

    Beitrag zuletzt geändert: 8.3.2013 11:27:16 von webmag
  7. Autor dieses Themas

    xxxparenjxxx

    xxxparenjxxx hat kostenlosen Webspace.

    Hallo.
    Also zu dem session_start() ganz am anfang habe ich jetzt verstanden ;) danke für die Ausführliche erklärung hehe.

    Hier mal die angeforderten Daten ;)

    Die login.php von hcms als txt: http://xxxparenjxxx.lima-city.de/login.php.txt

    Die logintest.php von webmag als txt. http://xxxparenjxxx.lima-city.de/logintest.php.txt

    Habe auch nochmal überprüft ob wirklich kein Leerzeichen da ist, ist keins100%.

    Das mit dem Ordner TESTPAGE stimmt hast recht habe nochmal nachgeschaut, es ist aber als Pfad schon richtig hinterlegt, hab mal n Bild davon gemacht:
    http://xxxparenjxxx.lima-city.de/dateipfad.PNG

    Das mit der .htaccess werde ich gleich mal ausprobieren melde mich danach wieder.

    *edit

    Nein es ist nichts includiert.
    Alle diese Dateien, also:
    login.php,
    index.php,
    logintest.php
    selbst login.php.txt und logintest.php.txt und dateipfad.png
    liegen in dem auf dem "dateipfad.png" gezeigten Dateipfad.
    Also kein include und keine .htaccess vorhanden. Deffinitiv nicht, denn ich weiß nocht nicht einmal ganz recht was so eine .htaccess bewirkt und wie man die einbindet usw.
    Außer es ist eine (wie du schon sagtest unsichtbare) von "werk" aus drauf ohne dass ich welche geschrieben hab.
    Werde aber wie gesagt trotzdem mal das ausprobieren und selbst eine leere .htaccess anlegen und hochladen.

    mfg, Michl




    Beitrag zuletzt geändert: 8.3.2013 11:59:52 von xxxparenjxxx
  8. hmm, ok ... DOCUMENT_ROOT = TESTPAGE .... das wäre geklärt :)
    und Quell-Codes (die .txt Dateien) sehen auch gut aus, keine Ausgabe vor session_start()

    aber trotzdem gehts nicht ... ? ... jetzt weiß ich auch nicht mehr weiter .... ! :oO


    wirklich sehr sehr komisch,
    bei zwei anderen User-Accounts (von @hcms und von mir) funktioniert es

    also ... Support-Ticket erstellen ... zu Problem mit SESSION
    sag im Ticket auch, das der SELBE CODE bei anderen funktioniert, aber bei Dir nicht
    Du kannst ja auch den Link zu diesem Forum-Beitrag ins Ticket schreiben.

    ... oder ... noch ne Idee:

    ... hast Du noch ne zweite Eimail (oder erstelle Dir eine neue bei FreeMailer wie z.B. web.de)
    und damit noch einen neuen Account bei Lima-City anmelden,

    und in diesem neuenn Account nichts ändern ... nur per FTP

    + die index.html löschen
    + die login.php (von @hcms) hochladen
    + die logintest.php (von mir) hochladen

    Wenn es dann im neuen Account funktioniert, dann liegt es wohl an Deinem User-Webspace
    .. evtl kann der Lima-City Support auch Deinen "alten" Account neu aufsetzen / reparieren
    das kannst Du ja auch im Ticket anfragen

    Viel Glück ... :)

    EDIT ... PS:
    in meiner logintest.php ist ein kleiner (unwichtiger) Fehler ...

    anstatt so
    <form action="<?php echo $runfile; ?>" method="post" />

    sollte es so sein:
    <form action="<?php echo $runfile; ?>" method="post">

    weil <form ...> wird ja wieder durch </form> geschlossen.

    aber das ist für SESSION, etc. kein Problem, nur ein "schönheits Fehler"
    :)


    Beitrag zuletzt geändert: 8.3.2013 12:22:11 von webmag
  9. Autor dieses Themas

    xxxparenjxxx

    xxxparenjxxx hat kostenlosen Webspace.

    Ich wieder.

    Hab jetzt also ein neues acc. angelegt und die sachen einfach mal hochgeladen, index.php gelöscht, nur login.php und logintest.php hochgeladen und domain eingestellt.
    http://lem.12hp.de/login.php
    http://lem.12hp.de/logintest.php
    Funktioniert beides aus welchem grund auch immer trotzdem nicht.
    Ticket ist bereits angelegt, bin mal gespannt wo der Fehler liegt.
    Wahrscheinlich ist durch das kopieren oder sowas doch n Fehler entstanden. kP.

    Danke für die Hilfe trotzdem :)

    mfg, Michl
  10. h**s

    wirklich seltsam...

    kontrolliere doch mal in deinem editor in dem du die codes bearbeitest ob die Kodierung stimmt:
    mein code sollte als "Unicode (UTF8)" abgespeichert werden.
  11. Autor dieses Themas

    xxxparenjxxx

    xxxparenjxxx hat kostenlosen Webspace.

    Hallo,

    das problem ist gelöst!!!!
    ENDLICH :)

    Hier ist die Antwort vom Ticket:

    "Hallo,

    das liegt am Encoding, da vor dem <?php noch die Byte-Order-Mark steht, wird diese bereits ausgegeben und PHP kann keine Cookies mehr senden.

    Ich habe die Datei auf dem Webspace für dich Konvertiert. In deinem Editor solltest du das umstellen können."

    Ich musste die Kodierung in Notepad++ von "UTF8" auf "UTF8 ohne BOM" umstellen und die datei neu hochladen. Schon funktioniert die ganze Sache wieder.

    Danke euch allen für die dennoch sehr lehrreichen Tips und Hilfestellungen :)

    mfg, Michl
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!