Seite 1 von 2
Cookie setzen in eigenem Modul...
Verfasst: Di 2. Aug 2005, 09:45
von phpchris
...Hallo alle zusammen,
nachdem ich mein erstes Plugin geschrieben habe, möchte ich nun ein paar Module schreiben, um auf das Plugin zuzugreifen.
Aber irgendw8ie schein ic in meinem Modul kein Cookie setzen zu können, kann das sein?
Verfasst: Di 2. Aug 2005, 09:49
von emergence
heute sind anscheinend cookies an der tagesordnung...
ähm wie setzt du deine cookies ? mittels header() ?
Verfasst: Di 2. Aug 2005, 09:52
von phpchris
Ich setze die mittels setcookie();
Verfasst: Di 2. Aug 2005, 09:56
von emergence
ich zitiere mal
setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie. Wie andere Header auch, müssen Cookies vor irgendwelchen anderen Ausgaben Ihres Skriptes gesendet werden (dies ist eine Einschränkung des Protokolls). Sie müssen deshalb solche Funktionsaufrufe vor irgendwelchen Ausgaben, inklusive <html>- oder <head>-Tags sowie irgendwelcher Whitespaces tätigen. Erfolgte bereits vor dem Aufruf dieser Funktion eine Ausgabe erfolgt sein, gibt setcookie() scheitern und FALSE zurückgeben. War setcookie() erfolgreich, wird TRUE zurückgegeben. Dies sagt jedoch nichts darüber aus, ob der Benutzer das Cookie auch akzeptiert hat.
Verfasst: Di 2. Aug 2005, 09:58
von phpchris
Hab ich gerade auch gefunden...
Kann man also knicken weil die header schon raus sind...
Danke trotzdem...
Verfasst: Di 2. Aug 2005, 10:02
von emergence
kicken ?
nein... es gibt an sich ne lösung das man header und cookies sehr wohl innerhalb von modulen setzen kann...
man bedient sich des output bufferings...
steht etwas weiter unten in der php doku selbe seite...
Verfasst: Di 2. Aug 2005, 10:09
von emergence
es gibt noch ne andere möglichkeit
sieh dir die conlib/session.inc an.
$sess steht so gut wie immer zur verfügung...
und ein cookie wird seitens frontend auch immer gesetzt...
ein kleiner test zum speichern einer variable
Code: Alles auswählen
<?php
if ($sess->is_registered("myvar")) {
echo "stored myvar: ".$myvar."<br>";
} else {
echo "save myvar<br>";
$myvar = "blabla";
$sess->register("myvar");
}
?>
ist jetzt getestet und funktioniert bei mir...
beim erstmaligen aufruf erscheint
save myvar
beim zweiten
stored myvar: blabla
man sollte da nur noch wissen das die variablen nur dann gespeichert werden wenn in der front_content.php der page_close(); erreicht wird...
sprich bei weiterleitungen mittels nachfolgenden die(); wird nix gespeichert...
Verfasst: Di 2. Aug 2005, 10:42
von phpchris
Den letzten Rest verstehe ich nicht so ganz.
Wann werden die Variablen nur gespeichert?
Beim Klicken auf einen anderen Menüounkt st die Variable scheinbar aus der Session raus...
Verfasst: Di 2. Aug 2005, 10:59
von emergence
das hängt mit der funktionsweise der front_content.php zusammen
zu beginn werden alle variablen aus der sess ausgelesen...
Code: Alles auswählen
//Frontend
page_open(array('sess' => 'Contenido_Frontend_Session',
'auth' => 'Contenido_Frontend_Challenge_Crypt_Auth',
'perm' => 'Contenido_Perm'));
und gespeichert wird das ganze wieder mittels
der rest passiert dazwischen...
wenn die php seite nicht bis zum ende der front_content.php kommt
wird keine sicherung der werte vorgenommen...
ich denke die beste möglichkeit ist einfach du probierst das mal aus...
Verfasst: Di 2. Aug 2005, 11:01
von phpchris
Also bei mir funktioniert das nicht.
Ich kann die Variable scheinbar in die Session speichern, aber auf der nächsten Seite ist diese nicht mehr verfügbar.
Wann kommt eine Page nicht bis zu
???
Verfasst: Di 2. Aug 2005, 11:13
von phpchris
Also so hier klapte das nicht:
Code: Alles auswählen
<?php
if($sess->is_registered($logged_in))
echo $logged_in."|<bR>";
if(($_POST['submit'] == "") && ($logged_in != 1))
{
$html =
'<form method="post" action="front_content.php?idcatart='.$idcatart.'">
........
</form>';
}
else if($_POST['submit'] != "")
{
$query = "SELECT * FROM ".$cfg['tab']['ankauf_user']." WHERE `login`='".$_POST['login']."'
AND `password`='".md5($_POST['pass'])."'";
$db->query($query);
while($db->next_record())
{
$user_id = $db->f('id');
$user_login = $db->f('login');
$logged_in = 1;
$sess->register($user_id);
$sess->register($user_login);
$sess->register($logged_in);
}
if($logged_in != 1)
{
echo "Zugangsdaten falsch!";
}
else
{
echo "Eingeloggt"
}
}
else if($logged_in == 1)
{
echo "Eingeloggt"
}
?>
Verfasst: Di 2. Aug 2005, 11:14
von emergence
phpchris hat geschrieben:Wann kommt eine Page nicht bis zu
???
wenn im code zb ein die(); aufgerufen wird...
Verfasst: Di 2. Aug 2005, 11:16
von phpchris
Also soweit ich die front_content.php überblicke, wird das nur bei redirects aufgerufen.
Das ist bei mir aber nicht der Fall. Es handelt sich um eine Blanko-Installation mit dem Beispieltemplate.
Da ist in der Navigation doch kein redirect drinne...
Verfasst: Di 2. Aug 2005, 11:22
von phpchris
Kann es sein, dass in der front_content.php ein fehler ist?
Müsste es nicht lauten
Verfasst: Di 2. Aug 2005, 11:28
von emergence
nein, kein fehler in der front_content.php
ich hab das code stück bei mir etwas geändet...
sprich ich habs jetzt getestet und das funktioniert bei mir...
die änderung meinerseits
$sess->register($user_id) -> $sess->register("user_id")
$sess->is_registered($logged_in) -> is_registered("logged_in")