Session Variable und fehlerhafte Ausgabe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Session Variable und fehlerhafte Ausgabe

    Hallo,

    bei mir häufen sich grade die Probleme und ich weiß nicht warum ;)
    Ich habe eine Formular mit einem Select-Feld, wenn man einen Eintrag daruas wählt, wird der value-Wert des selektierten Eintrages in der Variable $test gespeichert.
    Da der Value-Wert z.B. wie folgt aussieht: value="1/8" möchte ich diesen Wert nun mit Hilfe der Funktion split in 2 Variablen zerlegen.
    Ich habe dies zum Test zuerst mit einer anderen Variable getestet (siehe unten $datum usw.) Da funktionert es ohne Probleme, ich kriege alles korrekt ausgegeben und kann die Session Variable auch auf der nächsten Seite ausgeben. Mache ich das gleiche jedoch mit meiner $test Variable bekomme ich zwar die korrekten Werte angezeigt (auf der aktuellen Seite) aber die Session Variable wird auf der nächsten Seite nicht ausgegegben. Wenn ich auf der nächsten Seite prüfe ob die Session Variable gesetzt ist, bekomme ich die Meldung true, aber bei der Ausgabe sehe ich keine Werte. Wo liegt das Problem?? Darüer zerbreche ich mir schon den ganzen Tag den Kopf ;)

    Quellcode

    1. $test = $_POST['selectklasse'];
    2. $datum = "04/30/1973";
    3. list ($monat, $tag, $jahr) = split('/', $datum);
    4. echo "Monat: $monat; Tag: $tag; Jahr: $jahr<br />\n";
    5. $_SESSION["monat"] = $monat;
    6. list ($topic, $fach) = split('/', $test);
    7. echo "Fach: $topic; Themna: $fach;<br />\n";
    8. $_SESSION["topic"] = $topic;
    Alles anzeigen
    "Ich bin wie Wein und werde im Alter immer besser." (Greg Foster)
  • so, ich hab mal register_globals auf OFF gemacht und habe zusätzlich die Variablen umbenannt (wie du es mir gezeigt hast).
    Aber das Problem ist immer noch das gleiche. Die Session Variable wird auf der nächsten Seite nicht ausgegeben. Obwohl sie laut der funktion session_is_registered("variable") in der Session registriert ist. Die anderen Session Variablen werden aber ausgegeben, nur die $_SESSION["topic"] nicht.
    "Ich bin wie Wein und werde im Alter immer besser." (Greg Foster)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Opa114 ()

  • wegen dem session_start(); Momentan ist es ohne, nur auf der Startseite. Hab aus meinem PHP/MYSQL Buch von Matthias Kannengießer einen kleinen Beispiel Code zu Seassions über 3 Seiten abgetipt und asuprobiert und dann geht es, wenn ich das session_start() nur auf die start-Seite mache. Ich habe es bei mir aber auch schon auf jeder Seite gehabt, genau das gleiche Problem.

    Das kommt auf Seite 2- wenn ich print_r($_SERVER); mache:

    Quellcode

    1. Array ( [CONTENT_LENGTH] => 30
    2. [CONTENT_TYPE] => application/x-www-form-urlencoded
    3. [DOCUMENT_ROOT] => /srv/www/web4/html
    4. [GATEWAY_INTERFACE] => CGI/1.1
    5. [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    6. [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
    7. [HTTP_ACCEPT_ENCODING] => gzip,deflate
    8. [HTTP_ACCEPT_LANGUAGE] => de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    9. [HTTP_CONNECTION] => keep-alive
    10. [HTTP_COOKIE] => dbx-pagemeta=grabit:0-|1-|2-|3-|4-|5-|6-&advancedstuff:0-; dbx-postmeta=grabit:0+|1-|2-|3-|4-|5-&advancedstuff:0-|1-|2-; PHPSESSID=37854eea8493ca2037db1a301f6bc2f4
    11. [HTTP_HOST] => mirrortheworld.de
    12. [HTTP_KEEP_ALIVE] => 300
    13. [HTTP_REFERER] => http://mirrortheworld.de/pai/index.php?action=login
    14. [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
    15. [PATH] => /bin:/usr/bin
    16. [PHPRC] => /etc/php/web4 [QUERY_STRING] => action=spiele
    17. [REDIRECT_STATUS] => 200 [REMOTE_ADDR] => 84.178.68.214
    18. [REMOTE_PORT] => 3020
    19. [REQUEST_METHOD] => POST
    20. [REQUEST_URI] => /pai/index.php?action=spiele
    21. [SCRIPT_FILENAME] => /srv/www/web4/html/pai/index.php
    22. [SCRIPT_NAME] => /pai/index.php [SERVER_ADDR] => 85.25.86.63
    23. [SERVER_ADMIN] => [no address given]
    24. [SERVER_NAME] => mirrortheworld.de
    25. [SERVER_PORT] => 80
    26. [SERVER_PROTOCOL] => HTTP/1.1
    27. [SERVER_SIGNATURE] => Apache/2.0.53 (Linux/SUSE) Server at mirrortheworld.de Port 80
    28. [SERVER_SOFTWARE] => Apache/2.0.53 (Linux/SUSE)
    29. [ORIG_SCRIPT_NAME] => /pai/index.php
    30. [ORIG_SCRIPT_FILENAME] => /srv/www/web4/html/pai/index.php
    31. [PHP_SELF] => /pai/index.php
    32. [REQUEST_TIME] => 1197817444 [argv] => Array ( [0] => action=spiele ) [argc] => 1 ) 204
    Alles anzeigen


    Vielleicht hängt es mit meinem Seiten-Aufbau zusammen? Ich habe eine index.php, in die zu Beginn die Datei functions.php eingebunden, wird die die Verbindung zur Datenbank herstellt und die auch die Funktion zum einloggen beinhaltet
    Inhalt der functions.php:

    Quellcode

    1. <?php
    2. session_start();
    3. class dbmanager {
    4. var $connid;
    5. var $erg;
    6. var $error;
    7. function dbmanager($host, $user, $password) {
    8. if(!$this->connid = mysql_connect($host, $user, $password))
    9. echo "Fehler beim Verbinden...";
    10. return $this->connid;
    11. }
    12. function select_db($db) {
    13. if (!mysql_select_db($db, $this->connid))
    14. echo "Fehler beim Auswählen der DB $db: ".mysql_error();
    15. else
    16. return true;
    17. }
    18. function sql($sql)
    19. {
    20. if (!$this->erg = mysql_query($sql, $this->connid)) {
    21. echo "Fehler beim Senden der Abfrage...";
    22. $this->error = mysql_error();
    23. }
    24. else
    25. return $this->erg;
    26. }
    27. function error() {
    28. return $this->error;
    29. }
    30. }
    31. function login($username, $password) {
    32. global $db, $_SESSION;
    33. $sql = $db->sql("SELECT * FROM user WHERE username = '".$username."' AND password = '".md5($password)."' LIMIT 1");
    34. if (mysql_num_rows($sql) > 0) {
    35. $data = mysql_fetch_array($sql);
    36. foreach($data as $name => $wert) {
    37. $userdata[$name] = $wert;
    38. }
    39. $_SESSION[userdata] = $userdata;
    40. $_SESSION[loggedin] = true;
    41. return true;
    42. }
    43. else
    44. return false;
    45. }
    46. function loggedin() {
    47. global $_SESSION;
    48. if ($_SESSION[loggedin])
    49. return true;
    50. else
    51. return false;
    52. }
    53. function logout() {
    54. if(session_destroy())
    55. return true;
    56. else
    57. return false;
    58. }
    59. ?>
    Alles anzeigen

    Diese functions.php wird ganz zu Beginn in der index.php eingebunden, dann folgt ein wenig HTML-Code mit einer Tabelle, in diese Tabelle wird mit include("switch_pages.php), die Datei switch_pages.php eingebunden, in der geprüft wird welche Action aufgerufen wurde, denn ich rufe einen Link wie folgt auf:

    index.php?action=dieAKTION
    Inhalt der index.php

    Quellcode

    1. <?php
    2. if (!session_start())
    3. print "Fehler beim Starten der Session!";
    4. include("inc/functions.php");
    5. $db = new dbmanager("localhost", "user", "pw");
    6. $db->select_db("DB");
    7. if($_GET[action] == "logout")
    8. include("pages/logout.php");
    9. ?>
    10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    11. <html xmlns="http://www.w3.org/1999/xhtml">
    12. <head>
    13. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    14. <title>Lernbox</title>
    15. <style type="text/css">
    16. @import url("style.css");
    17. </style>
    18. </head>
    19. <body>
    20. <table id="Tabelle_01" align="center" width="775" border="0" cellpadding="0" cellspacing="0" style="margin-top:-50px">
    21. <tr>
    22. <td colspan="5" class="index1" width="775" height="49"></td>
    23. </tr>
    24. <tr>
    25. <td rowspan="5" class="index2" width="140" height="636">
    26. <div class="navigation">
    27. <a href="index.php?action=lernen">Lernen</a><br /><br />
    28. <a href="index.php?action=erstelle_karte">Neue Karte</a><br />
    29. <a href="#">Neues Set</a><br />
    30. <a href="index.php?action=karten_verwalten">Karten verwalten</a><br />
    31. <a href="index.php?action=info">Info</a><br /><br />
    32. <a href="index.php?action=logout">Logout</a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    33. <a href="#">Impressum</a>
    34. </div>
    35. </td>
    36. <td colspan="3" class="index3" width="563" height="45"></td>
    37. <td rowspan="5" class="index4" width="72" height="636"></td>
    38. </tr>
    39. <tr>
    40. <td colspan="3" class="index5" width="563" height="50"></td>
    41. </tr>
    42. <tr>
    43. <td colspan="3" class="index6" width="563" height="442">
    44. <div class="main">
    45. <?php
    46. include("inc/switch_pages.php");
    47. ?>
    48. </div>
    49. </td>
    50. </tr>
    51. <tr>
    52. <td rowspan="2" class="index7" width="73" height="99"></td>
    53. <td class="index8" width="417" height="36"></td>
    54. <td rowspan="2" class="index9" width="73" height="99"></td>
    55. </tr>
    56. <tr>
    57. <td class="index10" width="417" height="63"></td>
    58. </tr>
    59. </table>
    60. </body>
    61. </html>
    Alles anzeigen


    Inhalt der switch_pages.php:

    Quellcode

    1. <?php
    2. if($_GET[action] == "register")
    3. include("pages/register.php");
    4. else if(($_GET[action] == "zeige_themen")and loggedin())
    5. include("pages/Themenauswahl.php");
    6. else if(($_GET[action] == "spiele")and loggedin())
    7. include("pages/Karte2.php");
    8. //include("pages/Karte.php");
    9. else if(($_GET[action] == "karte_pruefen")and loggedin())
    10. include("pages/Karte_Antwort.php");
    11. else if(($_GET[action] == "next_karte") and loggedin())
    12. include("pages/Karte.php");
    13. else if($_GET[action] == "info")
    14. include("pages/info.php");
    15. else if(($_GET[action] == "change_password") and loggedin())
    16. include("pages/change_password.php");
    17. else if(($_GET[action] == "erstelle_karte") and loggedin())
    18. include("pages/neue_karte.php");
    19. else if(($_GET[action] == "karten_verwalten")and loggedin())
    20. include("pages/karten_verwalten.php");
    21. else if($_GET[action] == "lost_password")
    22. include("pages/lost_password.php");
    23. else if(($_GET[action] == "login") and (login($_POST[username], $_POST[password])))
    24. include("pages/Spielauswahl2.php");
    25. else if(($_GET[action] == "lernen") and (login($_POST[username], $_POST[password])))
    26. include("pages/Spielauswahl2.php");
    27. else if(loggedin()) {
    28. include("pages/Spielauswahl2.php");
    29. }
    30. else {
    31. include("pages/loginform.php");
    32. }
    33. ?>
    Alles anzeigen


    und jedesmal wenn ich eine der oben aufgeführten Actions aufrufe, wird in der index.php die entsprechende *.php Datei eingebunden.
    Liegt vielleicht dort irgendwo der Fehler? Oder kann es da mit include(); Probleme geben? bzw. wo müsste hier der Befehl session_start(); stehen? Laut dem Beispiel aus meinem Buch bzw. so wie es funktioiert nur in der Start-Seite?
    "Ich bin wie Wein und werde im Alter immer besser." (Greg Foster)
  • ah stimmt da hab ich die Striche vergessen ;)

    Hier der Code zu print_r($_SESSION);

    Quellcode

    1. Array ( [v_username] => [userdata] => Array ( [0] => 2 [ID] => 2 [1] => Matthias
    2. [username] => Matthias [2] => Matthias Ballreich
    3. [name] => Matthias Ballreich [3] => 5a747a35744e5f50f55d0bac09a43d8d
    4. [password] => 5a747a35744e5f50f55d0bac09a43d8d [4] => info@mirrortheworld.de
    5. [mail] => info@mirrortheworld.de )
    6. [loggedin] => 1 [v_userid] => 2 [v_monat] => 04 [v_topic] => )


    und siehe da v_topic hat wieder keinen Wert
    "Ich bin wie Wein und werde im Alter immer besser." (Greg Foster)
  • $_SESSION["post"] = $_POST ?

    --> damit meintest du sicher:

    $_SESSION["post"] = $_POST["selectklasse"]; // aus dem aller ersten Post oder??

    wenn ich print $_SESSION["post"]; in der 2. Seite mache, erfolgt keine Ausgabe, wenn ich allerdigs print $_SESSION["post"]; in der Datei ausgebe, wo ich es zuweise, erfolgt eine Ausgabe. Und wie gesagt, wenn ich mit session_is_registered("post"); auf der 2. Seite mache bekomme ich "1" ausgegeben (für true).
    "Ich bin wie Wein und werde im Alter immer besser." (Greg Foster)
  • wie Login?

    eigentlichlich nicht, das Login-Formular ist eine Seite vorher und wenn sich korrekt eingeloggt hat, kommt man auf die Seite mit der dem Select-Feld "selectklasse", und wenn man da auf den Button drückt kommt man zu Seite 2, wo es nicht mehr ausgegeben wird.
    "Ich bin wie Wein und werde im Alter immer besser." (Greg Foster)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Opa114 ()