Statement-Variable mit Session weitergeben

Alles, was PHP betrifft, kann hier besprochen werden.

Statement-Variable mit Session weitergeben

Postby airis » 08. March 2005 14:54

Hallo Zusammen,
ich möchte einen ausgelesenen "nickname" per Session-Variable weitergeben, habe aber so meine Probleme.
Die Variable habe ich nach dem Statement folgendermaßen definiert:
Code: Select all
$_SESSION['var'] = $row['nickname'];

In der ausgelesenen Seite habe ich im Kopf folgendes stehen:
Code: Select all
<?php
session_start();
 $_SESSION['var'] = "$a_nickname";
?>

In der Seite wo ich auslesen möchte, habe ich im Kopf das gleiche stehen wie vor und zum Auslesen:
Code: Select all
<?php echo "Variable: ".$_SESSION["var"]."<br>";?>

Aber es kommt nichts an, gehe ich falsch an die Sache ran?

Könnt Ihr mir helfen?
Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby SNowborn » 08. March 2005 18:13

könntest du auch die ganze File posten? oft liegt es daran, man übersieht auch einfach vieles :) (spreche aus Erfahrung)

SNo
SNowborn
 
Posts: 7
Joined: 13. December 2004 13:50

Postby airis » 08. March 2005 18:31

Hallo SNowborn,

hier ist der kompl. Code (Startseite der Session):
Code: Select all
<?php
session_start();
$_SESSION['var'] = $row['nickname'];
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body leftMargin="0" topMargin="0" MARGINWIDTH="0" MARGINHEIGHT="0" background="../1ht/index_de-Dateien/base-Dateien/background.jpg" width="900" height="900" border="0" alt=""><br>
<br><br><br><br><br><br><br><br><br>

          <table border=0 align=center cellspacing=0 cellpadding=0 width="370">
                <tr>
                  <td align=center class="bmcatbg"><font face="Arial" size="6" color="#FFFFFF">Weiterleitung</font>
                  </td>
                </tr>
                <tr>
                 <td class=bm2 align=right>&nbsp;
                 </td>
               </tr>
         </table>
         <table border=0 align=center cellspacing=0 cellpadding=0 width="370">
             <tr class=bm2>
                 <td align=right><font face="Arial" size="2" color="#000000">
                 Sie möchten weitere Werbe-Einträge vornehmen?:&nbsp;</font>
                 </td>
                 <td>
                  <form action="../phplinks_de/add.php" method="post">
                 <input type="submit" value="zurück" class="bm5">
                 </td>
              </tr>
              <tr>
                <td class=bm2 align=right>&nbsp;
                </td>
                <td class=bm2 align=right>&nbsp;
                </td>
               </tr>
              </form>
              <tr class=bm2>
                 <td align=right><font face="Arial" size="2" color="#000000">
                 Sie möchten eine Rechnung bekommen?:&nbsp;</font>
                 </td>
                 <td>
                 <?php
                 //=====================================
                 // id, nickname von address auslesen
                 //=====================================
                   $query = "SELECT id, nickname
                      FROM db_phprechnung.address
                      WHERE nickname= '".$_SESSION["nickname"]."'";
                   $result = @mysql_query($query) or die (mysql_error());
                    while ($row = @mysql_fetch_array($result))
                    {
                     $a_id = $row['id'];
                     $a_nickname = $row['nickname'];
                     $_SESSION['var'] = $row['nickname'];
                 ?>
                 <?php
                 //=====================================
                 // Wenn Neukunde
                 //=====================================
                  }
                  if ($a_nickname != $nickname)
                  {
                 ?>
                 <form action="weiter_2.php" method="post">
                 <?php
                 //=====================================
                 // Wenn Altkunde
                 //=====================================
                  }
                  if ($a_nickname == $nickname)
                  {
                 ?>
                 <form action="../1ht/index_de-Dateien/paymodi/paymodi_select_2.php" method="post">
                 <?php
                  }
                 ?>
                 <input type="submit" value="weiter" class="bm5">
                 </td>
               </tr>
               <tr>
                <td class=bm2 align=right>&nbsp;
                </td>
                <td class=bm2 align=right>&nbsp;
                </td>
               </tr>
               </form>
               <tr class=bm2>
                 <td align=right><font face="Arial" size="2" color="#000000">
                 Sie möchten<font face="Arial" size="2" color="#FF0000"> keine </font>Rechnung ?:&nbsp;</font>
                 </td>
                 <td>
                  <form action="logout_2.php" method="post">
                 <input type="submit" value="logout" class="bm5">
                 </td>
              </tr>
              <tr>
                <td class=bm2 align=right>&nbsp;
                </td>
                <td class=bm2 align=right>&nbsp;
                </td>
               </tr>
              </form>
           </table>
      </body>
</html>


Vieleicht siehst Du ja direkt was falsch ist?
Wenn nötig kann ich auch noch "weiter_2.php" posten.

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby Jan H. Krüger » 08. March 2005 18:41

Code: Select all
<?php
session_start();
$_SESSION['var'] = $row['nickname'];



Der Wert $row['nickname'] ist an dieser Stelle noch gar nicht bekannt.

Weiterhin versuchst du in deinem Query auf die Variable
Code: Select all
WHERE nickname= '".$_SESSION["nickname"]."'";


zuzugreifen. Wo wird $_SESSION["nickname"] definiert?
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby airis » 08. March 2005 19:00

Hallo Jan,

Code: Select all
Code:
<?php
session_start();
$_SESSION['var'] = $row['nickname']; 



Der Wert $row['nickname'] ist an dieser Stelle noch gar nicht bekannt.


Wo kann ich es denn hinschreiben, an´s Ende der Seite?
Hatte ich bereits versucht, die Variable wird aber nicht weitergegeben.
Weiterhin versuchst du in deinem Query auf die Variable
Code: Select all
Code:
WHERE nickname= '".$_SESSION["nickname"]."'";


zuzugreifen. Wo wird $_SESSION["nickname"] definiert?


Das ist der "Session-Nickname" aus dem Login.

Es reicht doch aus, wenn die Session 1x gestartet wird, oder?
Was muss ich ändern?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby Jan H. Krüger » 08. March 2005 19:22

Also nur um das mal zusammenzufassen,
In Skript 1 wird $_SESSION["nickname"] angelegt und mit einem Wert gefüllt.
In Skript 2 (welches du gepostet hast) liest du aus der Datenbank id und nickname aus wenn der in der Datenbank der nickname gleich dem Wert aus $_SESSION["nickname"] ist.
Dann weist du der Variable $a_nickname und $_SESSION["var"] den ausgelesenen nickname zu welcher ja identisch mit $_SESSION["nickname"] ist.
Danach vergleichst du $a_nickname mit $nickname. Wo kommt die Variable $nickname her?

Und nochmal konkret, welcher Sessionwert wird wo nicht genau übernommen? Ist denn bereits am Anfang $_SESSION["nickname"] gefüllt damit die Abfrage überhaupt korrekt ausgeführt wird ?

Das erste $_SESSION["var"] kannst du dir quasi sparen, $_SESSION["var"] wird nach der Datenbankabfrage so oder so mit einem Wert gefüllt. Vorausgesetzt die Abfrage lieferte überhaupt ein Ergebnis.

Das ist der "Session-Nickname" aus dem Login.

Stammt also aus einer anderen Datei? Gut, das war mir noch nicht ganz klar. Dann aber nochmal die Frage. Wird $_SESSION["nickname"] bereits richtig übernommen?
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby airis » 08. March 2005 19:39

Hallo Jan,

vieleicht nochmal von Anfang an.
1. Ich habe ein Login, User meldet sich an und trägt "nickname" ein.
2. Irgendwann kommt User zu der Seite, die ich gepostet habe, alles innerhalb der Session. Hier wird er zu verschiedenen Formularen weitergeleitet und vorher möchte ich mit der Session-Variablen feststellen ob der User bereits in der DB steht.

Dafür hatte ich auchmal versucht die Variable so zu definieren:
$_SESSION['var'] = $a_nickname;, hat mich aber auch nicht richtig weitergebracht.

Kannst Du mir sagen, wie ich die Variable übergeben bekomme?
Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby Jan H. Krüger » 08. March 2005 19:58

Also dein Problem ist das du in dem oben genannen Skript versuchst du $_SESSION["var"] zu füllen, auf dem nächsten Skript ist $_SESSION["var"] jedoch leer. Ist das richtig?
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby airis » 08. March 2005 20:02

absolut richtig
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby Jan H. Krüger » 08. March 2005 20:03

Gut. Und dann wäre eine Antwort auf meine obige Frage hilfreich ob $_SESSION['nickname'] richtig übernommen wird damit die Abfrage auch korrekt ausgeführt werden kann.
Denn wenn die Abfrage schon kein Ergebnis liefert dann kann $_SESSION['var'] auch nicht gefüllt werden.
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby airis » 08. March 2005 20:10

Hallo Jan,

hab´s gerade nochmal getestet, ich bekomme mit
Code: Select all
<?php echo "Session nickname: ".$_SESSION["nickname"]."<br>";?>

den im Login eingegebenen Nickname.
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby Jan H. Krüger » 08. March 2005 20:16

Super. Dann ist zumindest die Fehlerquelle ausgeräumt. ;)

Die zweite Zuweisung von $_SESSION['var] ist denke ich in Ordnung. Da bleibt jetzt noch die Frage ob $_SESSION['var'] richtig bestückt wird.
Was kommt denn dabei reis wenn du nach der Zuweisung dir den Wert mal ausgibst?

Das erste $_SESSION['var'] kannst du übrigens rauswerfen. Da ja $row['nickname'] noch gar nicht bekannt ist am Anfang des Skriptes kann er dort auch noch gar nichts zuweisen.
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby airis » 08. March 2005 20:26

Habe gerade versucht mir echo $row['nickname'] in der nächsten Seite auszugeben, wird aber nichts angezeigt.
Folgendes habe ich in der nächsten Seite stehen:
Code: Select all
<?php echo "DB variable: ".$_SESSION["var"]."<br>";?>
<?php echo "DB variable: ".$HTTP_SESSION_VARS["var"]."<br>";?>
<?php echo "DB variable: ".$_SESSION["var1"]."<br>";?>
<?php echo "Session nickname: ".$_SESSION["nickname"]."<br>";?>
<?php echo $row['nickname'];?>

Außer "VAR1" wird nichts angezeigt
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby Jan H. Krüger » 08. March 2005 20:31

Moment. Wo zauberst du jetzt $_SESSION['var1'] her? Nicht aus dem von dir oben gezeigtem Skript.

$row['nickname'] kann auch nicht auf der nächsten Seite bekannt sein. Es ist ja auch keine Sessionvariable. Sofern Variablen nich per Session oder Formular,also über Get oder Post weitergereicht werden stehen Variablen grundsätzlich nicht in den folgenden Skripten zur Verfügung. Das $row['nickname'] leer bleibt ist also völlig in Ordnung. Wäre sonderbar wenn es das nicht wäre.
session_start(); hast du drinn in deinem kurzen Test von eben?
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby airis » 08. March 2005 20:40

session_start(); ist drinn, am Anfang aller Seiten.
Die "var1" habe ich aus dem Hut gezaubert, nein Scherz beiseite, habe sie einfach mal zum Testen reingeschrieben
Code: Select all
$_SESSION["var1"] = "BLABLA";

und siehe da, BLABLA kommt in jeder Seite an, wo ich per Echo abfrage.
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests