[php] Session Register (array)

DarkSummer

Erfahrenes Mitglied
So habe ein Kleines Problem mit einer Session, wollte um die Datenbank etwas zu entlasten das array mit smilies aus der Datenbank als Session Speichern.
Dies funktioniert aus mir unbekannten Grund nicht.

Hier der Code

PHP:
<?
function replacesmilies($string)
{
  global $db,$image_path;
  $replace=array();
  if(session_is_registered("smilie_sub") && is_array($_SESSION['smilie_sub'])) {
    $replace=$_SESSION['smilie_sub'];
  } else {
    $query=$db->query("
      SELECT `smilie_id`,`smilie_need`,`smilie_hack` FROM `page_smilies`
    ");
    while($row=$db->fetch_array($query)) {
      $replace[$row['smilie_id']]=array("need" => $row[smilie_need],"hack" => $row[smilie_hack]);
    }
    $smilie_sub=$replace;
    print_r($smilie_sub);
    if(session_register("smilie_sub")) print_r($_SESSION['smilie_sub']);
    print_r($_SESSION['smilie_sub']);
  }
  for($i=0;$i<=count($replace);$i++) { 
    $string=str_replace($replace[$i]['need'],"<img src=\"".$image_path."/smilies/".$replace[$i]['hack']."\">",$string); 
  }
  return $string;
  $db->free_result();
}
?>

Es ist Komisch er Registriert die Session aber sie ist leer obwohl beim VOrherigen print_r die daten drine stehn. :((

Danke Für HIlfe.
 
Ja Ähm ... gruml Was soll mir das bringen wenn er die Daten immernoch nicht in der Session speichert ohne Auffindbaren grund.
Sorry für die Aussage aber :(
 
Die Daten stehen nicht in $_SESSION['smilie_sub'], weil Du sie nicht rein schreibst. Nirgendwo steht ein $_SESSION['smilie_sub'] = $irgendwas;!

snuu
 
Nur damit ichs Checke,
Ich dachte
PHP:
<?
session_register("smilie_sub"));
?>
würde dies so machen eig. order ?

Nur so das andere Test ich mal
 
naja da RegisterGlobals müll ist und man das eher deaktivieren sollte (jedenfalls ist das meine Meinung dazu) solltest du folgende Notiz aus der PHP-Befehlsreferenz dazu beachten:

Wenn Sie wollen, dass ihr Script unabhängig von der Einstellung von register_globals funktioniert, müssen Sie stattdessen das Array $_SESSION verwenden, weil $_SESSION-Einträge automatisch registriert werden. Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist.
 
Zurück