kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: session() wird unterbrochen

    geschrieben von emoebel

    ja
    der Befehl session_start(); muss immer vor der ersten Ausgabe gemacht werden,
    und auf jeder Seite, auf der man auch Zugriff auf die $_SESSION Variable haben will.


    frank1960sep schrieb:
    ...
    Auf der mitglieder.html Seite wird ja eigentlich erst das Formular zum Senden über Post bereitgestellt
    ...


    genau da sehe ich das (ein) Problem.

    Wenn ein User sich erfolgreich eingeloggt hat,
    und dann als eingeloggter User wieder auf die Seite mitgliederbereich.html geht
    dann sieht er - obwohl er ja schon / noch eingeloggt ist - wieder das Login-Formular.

    wenn Du aber dafür eine .php Seite machst, wie z.B. mitgliederbereich.php
    dann kannst Du ganz oben in der Datei prüfen, ob der User eingeloggt ist,
    und nur, wenn nein, dann auch das Logon-Formular ausgeben.

    Den Quellcode kannst Du uns gerne mal zeigen,
    dann kann man sicher viel genauer helfen,
    wenn "zu viel" für hier im Forum, dann z.B. auf http://pastebin.com

    oder du machst einen neuen Unter-Ordner z.B. "mycode"
    und kopierst dort alle Dateien rein, und ergänzt alle Dateinamen mit .txt
    so dass dann z.B. aus der Datei mitgliederbereichpost.php wird: mitgliederbereichpost.php.txt
    dann können wir alle Dateien (als Text / deren Quellcode) sehen

    PS: ... mit "nike-name" meinst Du wohl "nick-name" ... bzw. "user-name" ... :oO

  • in: alle Steuerzeichen entfernen ?

    geschrieben von emoebel

    ok, Danke

    ich dachte bei str_replace muss dann das zweite Argument auch ein (gleich großes) Array sein

    $str = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), $str);


    aber wenn es so auch funktioniert,

    $str = str_replace(array("\r", "\n", "\t"), ' ', $str);


    um so besser :)
  • in: session() wird unterbrochen

    geschrieben von emoebel

    Hallo

    mit Test-Login konnte ich problemlos mehrere Nachrichten senden,
    aber bei Aufruf einer .html Seite "sieht es so aus als ob" Login / Session nicht aktiv ist
    das liegt aber nur daran, dass man mit .html Seite (ohne Anpassung) kein PHP ausführen kann

    wenn Du zu einer .html Seite eine Link baust (mitgliederbereich.html)
    und nicht dafür gesort hast, das .html Seiten auch PHP können
    dann kann eine .html Seite nicht (mit PHP) prüfen, ob die SESSION (bzw. das Cookie) existiert

    damit man bei Aufruf einer .html Seite auch PHP nutzen kann,
    gibt es zwei Möglichkeiten mit .htaccess ... als rewrite oder mit AddType

    einfacher ... mach anstatt .html immer eine .php Datei, also: mitgliederbereich.php
    und dort kannst Du dann mit PHP prüfen, ob die Session läuft, / der Login aktiv ist.
    wenn ja, dann rein zum Mitgliederbereich, wenn nein, dann Login-Formular anzeigen.


    PS: zum Thema Login / Logout mit Session
    siehe auch dieser Beitrag: http://www.lima-city.de/thread/logout-mit-session_destroy
    dort findest Du ein Beispiel, wie man auf aktive SESSION (= Login) prüfen kann.

  • in: alle Steuerzeichen entfernen ?

    geschrieben von emoebel

    Hallo

    ich möchte aus einem String alle Steuerzeichen (Zeilenumbruch, Tabulator, etc) entfernen
    bzw. durch ein Leerzeichen ersetzen.

    wie ist es "richtig" ?
    ... wie muss der "Pattern" aussehen, wie oft \s escapen (mit Backslash) ?
    ... muss ich preg_replace() nehmen oder genügt auch str_replace() dafür ?

    $str = preg_replace('/\s/', ' ', $str);
    $str = preg_replace('/(\\\s)/', ' ', $str);
    $str = str_replace("\s", ' ', $str);


    oder doch besser die Steuerzeichen einzeln entfernen ?

    $str = str_replace("\r", ' ', $str);
    $str = str_replace("\n", ' ', $str);
    $str = str_replace("\t", ' ', $str);


    und ... macht es dabei einen Unterschied, ob der String in utf-8 oder iso-8859-1 vorliegt ?

  • in: logout mit session_destroy()

    geschrieben von emoebel

    tft-development schrieb:
    ... und du nicht daran denkst deinen Browser zu schließen...


    man kann mit JavaScript das aktuelle Fenster bei Logout schließen

    if ($go_act == 'logout') { 
    session_unset(); 
    session_destroy(); 
    
    print '<script type="text/javascript"> window.close(); </script>'."\n"; 
    
    }


    ok, dann kann man mit "geschlossenen Tab wiederherstellen" evtl doch wieder auf die Seite,

    aber bei meinen Tests war nach Logout auch bei "Zurück im Browser" kein Login mehr aktiv ?!

    das passiert nur, wenn man soweit zurück geht, bis "Formular erneut senden" kommt,
    wenn man das macht, dann loggt man sich erneut ein ... hmm ok

    IDEE .... man könnte bei Login noch einen TimeStamp übergeben,
    und wenn dieser dann älter als paar Sekunden ist, dann den Login nicht zulassen.

    $time_stamp = time(); 
    
    if (!empty($_REQUEST['pwd']) && !empty($_REQUEST['xtm'])) { 
    $xgo_pwd = md5($_REQUEST['pwd'].$salt); 
    $logtime = $_REQUEST['xtm']; 
    
    if ($xgo_pwd == $sec_pwd && ($time_stamp-30) < $logtime) { 
    $_SESSION['xpw'] = $xgo_pwd; 
    } 
    else { 
    $_SESSION['xpw'] = 'x'; 
    }
    
    }


    und im Login-Formular



    print '<br />'."\n"; 
    print '<br />'."\n"; 
    
    print '<form name="form1" method="post" action="index.php">'."\n"; 
    print '  Passwort: <input type="text" name="pwd" size="24" />'."\n"; 
    print '  <input type="hidden" name="xtm" value="'.$time_stamp.'" />'."\n"; 
    print '  <input type="hidden" name="act" value="login" />'."\n"; 
    print '  <input type="submit" name="go" value="LOGIN" />'."\n"; 
    print '</form>'."\n"; 
    
    print '<br />'."\n"; 
    print '<br />'."\n";


    damit ist das "erneut senden" bei Browser-Zurück nach 30 Sekunden nicht mehr als Login gültig.

  • in: file_get_contents gibt false für die eigene Domain zurück

    geschrieben von emoebel

    Hallo


    holst Du die Daten aus XML mit simplexml_load_file()
    ... dann ist 'src' vielleicht kein String sondern ein Object, das einen String enthält

    eine Variable $argv als Daten-Array für Elemente aus XML zu nehmen
    (bzw. als Argument in der Funktion) ist ziemlicher Unsinn
    weil die Variable $argv schon eine Bedeutung im PHP-System hat
    ... wenn Daten aus XML dann könnte man es $item oder $element oder $xyz nennen,
    ... egal, ... aber nicht $argv und auch nicht wie andere System Variablen


    und ... oft braucht eine Abfrage einen eigenen User-Agent, daher das mit dem header

    versuchs mal so

    $resdata = simplexml_load_file('deinedaten.xml'); 
    
    $n=1; 
    foreach ($resdata->rootelement->item as $xyz) { 
    
    $geturl = (string)$xyz->src;  // -- das Object 'src' als String in $geturl ablegen 
    
    $options = array("http" => array("header" => "User-Agent: Mein PHP-Skript\r\n"));
    $context = stream_context_create($options);
    
    $output = file_get_contents($geturl, false, $context));
    
    print "<br />--------------- NR: ".$n." ---------------\n"; 
    print "<pre>\n"; 
    print htmlspecialchars( print_r($output,true) ) . "\n"; 
    print "</pre>\n"; 
    
    $n++; 
    }


    Eine Alternative wäre: den Datei-Inhalt mit CURL auslesen.
    auch da muss man meist einen User-Agent mit angeben.

    projekt-brainstorming schrieb:
    ...Der Code parst ein XML-Tag und das Array enthält alle Attribute...


    ... ohne Quellcode, was da genau passiert können wir nur raten .... :oO

  • in: logout mit session_destroy()

    geschrieben von emoebel

    Hallo

    hier mal ein kleines Login / Logout PHP-Script mit session()

    ... ist aber nur zum "testen" ... trotz Session und MD5 mit Salt ist es nicht "wirklich" sicher.
    (man könnte / sollte die Eingaben ($_REQUEST Daten) noch prüfen / filtern / schützen ...)

    Das Passwort ist: test123

    <?php 
    // ------------------------------------------------------------ 
    
    header('Cache-Control: private, no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0');
    header('Pragma: no-cache'); 
    
    // ------------------------------------------------------------ 
    
    
    session_start(); 
    
    $adm_pwd = 'test123'; 
    
    $saltkey = 'jK3zi8mWx9oyPc'; 
    
    $sec_pwd = md5($adm_pwd.$saltkey); 
    
    
    if (!empty($_REQUEST['pwd'])) { 
    $xgo_pwd = md5($_REQUEST['pwd'].$saltkey); 
    if ($xgo_pwd == $sec_pwd) { $_SESSION['xpw'] = $xgo_pwd; } else { $_SESSION['xpw'] = 'x'; }
    }
    
    
    if (!empty($_REQUEST['act'])) { 
    $go_act = $_REQUEST['act']; } else { $go_act = 'home'; 
    }
    
    
    if ($go_act == 'logout') { 
    session_unset(); 
    session_destroy(); 
    }
    
    
    
    
    // ------------------------------------------------------------ 
    ?>
    <html>
    <head>
    <title>Admin</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body style="background:#EEEEEE; color:#000000;">
    <br>
    <br>
    
    <?php 
    // ------------------------------------------------------------ 
    
    print "<p>Aktuelle Aktion: <strong>".$go_act."</strong></p>\n"; 
    
    
    if (isset($_SESSION['xpw']) && $_SESSION['xpw'] == $sec_pwd) { 
    
    // ------------------------------------------------------------ 
    ?>
    
    <p> 
     --- <a href="?act=start">HOME</a> 
     --- <a href="?act=new">NEW</a> 
     --- <a href="?act=edit">EDIT</a> 
     --- <a href="?act=logout" style="color:#CC0000;">LOGOUT</a> 
     --- 
    </p> 
    
    
    <?php 
    // ------------------------------------------------------------ 
    
    
    }
    else {
    
    // ------------------------------------------------------------ 
    ?>
    
    
    <br>
    <br>
    
    <form name="form1" method="post" action="">
      Passwort: <input type="text" name="pwd" size="24">
      <input type="hidden" name="act" value="login">
      <input type="submit" name="go" value="LOGIN">
    </form>
    
    <br>
    <br>
    
    <?php 
    // ------------------------------------------------------------ 
    
    }
    
    
    if (isset($_SESSION['xpw']) && $_SESSION['xpw'] == 'x') { 
      print "<p>... falsches Passwort .... </p>\n"; 
    }
    
    // ------------------------------------------------------------ 
    ?>
    
    
    <br>
    <br>
    <br>
    
    
    </body>
    </html>



    Erklärung:

    Wenn man nicht ein-geloggt ist, wird das Login-Formular angezeigt,
    ... wenn Login Passwort richtig ist, dann ein Menü (inkl. Logout-Link)

    Bei "klick" auf den Logout-Link wird die Session gelöscht und beendet.

    ... das Cache-Problem kannst Du durch setzen eines NO-CACHE header() lösen.

    hoffe das hilft weiter :)

Login zum Webhosting ohne Werbung!