• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Loginsystem (Sessions & Cookies)

Status
Für weitere Antworten geschlossen.

axöööl

Neues Mitglied
Hallo, ich habe ein Problem mit einen Loginsystem.

Zuerst habe ich mit SESSIONS gearbeitet, da diese aber immer irgendwie nach circa 15 Minuten verfallen sind, habe ich mich entschlossen es mal mit COOKIES zu probieren.

Dass einloggen klappt auch wunderbar (dann wird der COOKIE_['authed'] = "true"; gesetzt, für die Zeit von 60 Minuten).

Beim ausloggen, also den COOKIES einen negativen Wert zu weisen klappt nicht. Ich bekomme dann die Fehlermeldung

Code:
[B]
Warning[/B]: Cannot modify header information - headers already sent by (output started at /usr/export/www/vhosts/funnetwork/hosting/wsef/v2/index.php:62) in [B]/usr/export/www/vhosts/funnetwork/hosting/wsef/v2/inc/login/logout.php[/B] on line [B]5
[/B]
In der index.php in der Zeile 62 ist einfach nur der Include Befehl von der logout.php
(hier der Code von logout.php)
PHP:
<h1>
 Logout
</h1>
<?php
setcookie ("authed", "", time() - 3600);
echo "Du hast dich ausgelogged und wirst nun automatisch weitergeleitet";
    echo "<meta http-equiv=\"refresh\" content=\"2;URL=?\">";
?>
Habt ihr eine Idee wie das funktionieren könnte?

Danke schonmal im Vorraus.

LG alex
 
[phpnet]setcookie[/phpnet] -> Die Funktion muss vor jeglicher Ausgabe ausgeführt werden ;)



btw: Ein cookie, dass vor einer Stunde ablaufen soll? ;D
PHP:
setcookie ("authed", "", time() + 3600);
 
hab ich ja beim einloggen gemacht

PHP:
setcookie ('authed', 'true', time() + 3600);
setcookie ('user_name', '$user_name', time() + 3600);
setcookie ('user_id', '$user_id', time() + 3600);

hab auch schon versucht einfach auf false zu setzten, geht aber auch nicht
 
Also bei dem code zumindest nicht.

Code:
<h1>
Logout
</h1>
Ist ja auch schon eine Ausgabe und warscheinlich hast du in der index.php auch schon welche ;)
 
Hast du das gelesen?
PHP:
on line 5
Könntest du evtl. den Codeteil bei Zeile 5 posten?

MfG, matibaski
 
auf php.net steht das aber wie ich das gemacht ahbe...was meinst du denn jetzt genau?

PHP:
      Beim Löschen eines Cookies sollten Sie sicherstellen, dass das      Verfallsdatum in der Vergangenheit liegt, um den Mechanismus zum      Löschen des Cookies im Browser auszulösen. Die folgenden Beispiele      zeigen, wie die im vorigen Beispiel gesendeten Cookies wieder gelöscht      werden:     
      
Beispiel 1320. setcookie() Beispiele zum Löschen
  
<?php
// Setzen des Verfalls-Zeitpunktes auf 1 Stunde in der Vergangenheit
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".example.com", 1);
?>
 
Hast du das gelesen?
PHP:
on line 5
Könntest du evtl. den Codeteil bei Zeile 5 posten?

MfG, matibaski

logout.php
PHP:
 <h1>
 Logout
</h1>
<?php
setcookie ("authed", "", time() - 3600);
echo "Du hast dich ausgelogged und wirst nun automatisch weitergeleitet";
    echo "<meta http-equiv=\"refresh\" content=\"2;URL=?\">";
?>

ZEILE 5: setcookie ("authed", "", time() - 3600);
 
Tschuldigung!
Hab mir nochmals deinen Post gelesen, und habe gesehen, dass du geschrieben hast:
Auf Linie 62 ist das include zu logout.php oder so..

Sorry :oops:

Ich kann den Fehler nicht sehen... Also nach meiner Meinung nach stimmt dies....
 
wenn die fehlermeldung schon besagt das der header bereits gesendet wurde (was übrigens schon bei der geringsten ausgabe von html-code geschieht) dann würde ich doch den code mal en bissl umdrehen das das nicht passiert.

PHP:
<?php
setcookie ("authed", "", time() - 3600);
?>

<meta http-equiv=\"refresh\" content=\"2;URL=?\">
<h1>
Logout
</h1>
Du hast dich ausgelogged und wirst nun automatisch weitergeleitet
so könnts gehen es sei denn du hast vorher noch irgendwo ausgaben in html oder echo

gruß jan
 
ja meiner meinung nach auch.

das ist aus der index.php aber damit hat das wohl nix zu tun^^ was ich gelernt hab ist das man nicht immer nde zeilenangaben glauben darf^^ man muss meistens ganz wo anders suchen

PHP:
<?php
if(!isset($_GET['class'])) { $class="index"; } else { $class = $_GET['class']; }
                     if (file_exists("./inc/$class/index.php")) {
                             include("./inc/$class/index.php");   
                        }else {
                               echo "Die angeforderte Seite existiert nicht.\n<br>
                                     Bitte überprüfen sie ihre URL.";
                              }
                        
                ?>
 
wenn die fehlermeldung schon besagt das der header bereits gesendet wurde (was übrigens schon bei der geringsten ausgabe von html-code geschieht) dann würde ich doch den code mal en bissl umdrehen das das nicht passiert.

PHP:
<?php
setcookie ("authed", "", time() - 3600);
?>

<meta http-equiv=\"refresh\" content=\"2;URL=?\">
<h1>
Logout
</h1>
Du hast dich ausgelogged und wirst nun automatisch weitergeleitet
so könnts gehen es sei denn du hast vorher noch irgendwo ausgaben in html oder echo

gruß jan

hat sich nicht viel geändert, ausser das der fehler jetzt in zeile 2 sein soll

Code:
[B]Warning[/B]: Cannot modify header information - headers already sent by (output started at /usr/export/www/vhosts/funnetwork/hosting/wsef/v2/index.php:62) in [B]/usr/export/www/vhosts/funnetwork/hosting/wsef/v2/inc/login/logout.php[/B] on line [B]2[/B]

logout.php
PHP:
<?php
setcookie ("authed", "", time() - 3600);
?>
<meta http-equiv=\"refresh\" content=\"2;URL=?\">
<h1>
Logout
</h1>
<br><br>
Du hast dich ausgelogged und wirst nun automatisch weitergeleitet.
 
PHP:
<?php
setcookie ("authed", "", time() - 3600);
?>

<meta http-equiv=\"refresh\" content=\"2;URL=?\">
<h1>
Logout
</h1>
Du hast dich ausgelogged und wirst nun automatisch weitergeleitet

schön aber jetzt steht da warscheinlich volgendes.

PHP:
<html>
<head>
<title>.....</title>
<?php
setcookie ("authed", "", time() - 3600);
?>

<meta http-equiv=\"refresh\" content=\"2;URL=?\">
<h1>
Logout
</h1>
Du hast dich ausgelogged und wirst nun automatisch weitergeleitet

also setz den PHP code GANZ AM ANFANG des scripts also ERST PHP und dan HTML.
PHP:
<?php
// PHP code
?>
<html>
<head>
<!-- head stuff -->
</head>
<body>
<!-- content -->
</body>
</html>
 
Geht ja nicht, weil das doch included ist. Ich kannd as ja nicht einfach in die index.php reinschreben, weil dann können sich die leute ja nicht mal einloggen.

index.php
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
<?php include("./inc/data/sql.php"); ?>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta name="robots" content="INDEX,FOLLOW">
  <meta name="keywords" content="">
  <meta name="description" content="">
  <title>
  </title>
  <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0">
  <table align="center" width="1000px"  cellpadding="0" cellspacing="0" border="0">
   <tr>
    <td rowspan="2"  background="img/layout/1.jpg" valign="top" width="20px" height="168px">
    </td>
    <td rowspan="2"  valign="top" background="img/layout/2.jpg" width="200px" height="168px">
     <table  width="200px"   cellpadding="0" cellspacing="0" border="0">
      <tr>
       <td align="center">
        <br>
<?php include("./inc/data/slogan.php"); ?>
       </td>
      </tr>
     </table>
    </td>
    <td valign="top" style="background-repeat:repeat-n;" background="img/layout/3.jpg" width="780px" height="123px">
     &nbsp;
    </td>
   </tr>
   <tr>
    <td style="background-repeat:repeat-n;" background="img/layout/4.jpg" width="780px" height="45px" id="titel">

    </td>
   </tr>
  </table>
  <table align="center" width="1000px" border="0" cellpadding="0" cellspacing="0" bordercolor="#ffffff">
  <tr height="20px">
    <td valign="top" bgcolor="#CC0000" width="20px">
    </td>
    <td valign="top" width="200px" bgcolor="#CC0000">
    </td>
    <td valign="top" width="760px" bgcolor="#CC0000">
    </td>
    <td valign="top" bgcolor="#CC0000" width="20px">
    </td>
   </tr>
   <tr>
    <td bgcolor="#CC0000" width="20px">
    </td>
    <td valign="top" align="center">
<!--- MENU --->
<?php include("./inc/data/menu.php"); ?>
<!--- MENU --->
    </td>
   <td valign="top" width="760px" id="main">
<!--- MAIN --->

                <?php
if(!isset($_GET['class'])) { $class="index"; } else { $class = $_GET['class']; }
                     if (file_exists("./inc/$class/index.php")) {
                             include("./inc/$class/index.php");   
                        }else {
                               echo "Die angeforderte Seite existiert nicht.\n<br>
                                     Bitte überprüfen sie ihre URL.";
                              }
                        
                ?>

<!--- MAIN --->
   </td>
   <td width="20px" bgcolor="#CC0000">
   </td>
  </tr>
  <tr height="20px">
   <td bgcolor="#CC0000" width="20px">&nbsp;
    </td>
    <td bgcolor="#CC0000" width="200px">&nbsp;
    </td>
    <td bgcolor="#CC0000" width="760px">&nbsp;
    </td>
    <td bgcolor="#CC0000" width="20px">&nbsp;
    </td>
   </tr>
  </table>
 </body>
</html>
 
wie genau meinst du das mit der ob_start() funktion? ich habe mir das zwar duchgelesen, aber ich blicke da nicht ganz durch...
 
mach es so:
PHP:
<?php
// Buffern Starten
ob_start();

// Hier kommt jetzt der Inhalt deiner Index Datei so wie du
// es im Moment auch hast

// Inhalt aus dem Buffer bekommen
$buffer = ob_get_contents();

// Buffern beenden
ob_end_clean();

// Inhalt des Buffers ausgeben
echo $buffer;
?>
 
cool, das geht ja wirklich... nur man muss natürlich die php klammer zwischenduch noch auf und zu machen

PHP:
<?php
ob_start();
?>

html zeugs ;)

<?php
$buffer = ob_get_contents();
ob_end_clean();
echo $buffer;
?>
 
Zuletzt bearbeitet:
Oo ich benutze dafür immer 2 vars, eine wo ich nachher noch metatags eintragen, und eine für den hauptteil *sich in die ecke stell und schäm*:D
also, wenn man schon phtml scribten möchte, muss man sowas auch anders lösen können :P

php=eine methode die nichts mit HTML gemein haben darf
*GERP(Gemeinschaft_der_Erhaltung_Rassenreinem_Php's) [ich entschuldige mich schon im vorraus, bei allen, bei denen das nach rechtsextremen propaganda aussieht]*

mach doch eine sache ala
umleitung zu einer rein php seite (auf der nur der cookie gelöscht wird (oder per frame löschen)
klingt alles doof :P
 
Wenn Interesse besteht, könnte ich hier mal meinen mini Templateparser posten, um Design von Inhalt zu trennen.
 
gg, sowas klingt gut^^
wird immer drüber geschrieben, aber nie kriegt man was davon zu sehen (sind immer so schäu:mrgreen:)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben