Cookie setzen in eigenem Modul...

phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Cookie setzen in eigenem Modul...

Beitrag 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?
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

heute sind anscheinend cookies an der tagesordnung... ;-)

ähm wie setzt du deine cookies ? mittels header() ?
*** make your own tools (wishlist :: thx)
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag von phpchris »

Ich setze die mittels setcookie();
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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.
*** make your own tools (wishlist :: thx)
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag von phpchris »

Hab ich gerade auch gefunden...

Kann man also knicken weil die header schon raus sind...

Danke trotzdem...
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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...
*** make your own tools (wishlist :: thx)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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...
Zuletzt geändert von emergence am Di 2. Aug 2005, 11:24, insgesamt 1-mal geändert.
*** make your own tools (wishlist :: thx)
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag 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...
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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

Code: Alles auswählen

page_close();
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...
*** make your own tools (wishlist :: thx)
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag 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

Code: Alles auswählen

page_close()
???
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag 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"
}

?>
Zuletzt geändert von phpchris am Di 2. Aug 2005, 11:15, insgesamt 2-mal geändert.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

phpchris hat geschrieben:Wann kommt eine Page nicht bis zu

Code: Alles auswählen

page_close()
???
wenn im code zb ein die(); aufgerufen wird...
*** make your own tools (wishlist :: thx)
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag 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...
phpchris
Beiträge: 438
Registriert: Fr 28. Mai 2004, 16:07
Kontaktdaten:

Beitrag von phpchris »

Kann es sein, dass in der front_content.php ein fehler ist?

Code: Alles auswählen

563:          	eval("?>\n".$code."\n <?php \n ");

Code: Alles auswählen

570:            eval("?>\n".$code."\n<?php\n");
Müsste es nicht lauten

Code: Alles auswählen

563:          	eval("?>\n".$code."\n <?php \n );

Code: Alles auswählen

570:            eval("?>\n".$code."\n<?php\n);
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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")
*** make your own tools (wishlist :: thx)
Gesperrt