Variablenübergabe...

kjh

Erfahrenes Mitglied
Hallo zusammen,

mal wieder ein tiefgründiges ( :) ) PHP Problem. Und zwar habe ich einmal einen Link bei dem eine Variable mit übergeben werden soll

Code:
Klick <a href="vote.php?kra=<? echo $id; ?>"> hier </a>

und einmal ein Forumular welches diese Variable auswerten soll und dann eben mit den andern Formulardaten weitergeschickt werden soll.

Code:
$id = $_Request["kra"];
...
 <input type="hidden" name="id" value="<? echo "$id"; ?>" size="4"><br><BR>

Das Problem ist jetzt nicht, dass nach dem Versand der Formulars nichts ankommt, sondern, dass nach betätigen des Links schon auf der nächsten seite nix ankommt. Grr, mit Get, Request und Post, alles schon ausprobiert. Das komische ist, dass unten in der Statusleiste beim Draufklicken auch noch die richtige ID hinter dem Link steht, also der Link stimmt.

Danke für eure Hilfe im vorraus!

kjh
 
Zuletzt bearbeitet:
Werden diese globalen Vaiablen nicht GROß geschrieben?
Also: $_GET, $_REQUEST, $_POST, $_SERVER

Bei dir sollte GET funktionieren.
 
fanste hat gesagt.:
Werden diese globalen Vaiablen nicht GROß geschrieben?
Also: $_GET, $_REQUEST, $_POST, $_SERVER

Bei dir sollte GET funktionieren.
Genau so sieht es aus.
Ich fuege dann mal zu Deiner Aufzaehlung noch folgende hinzu:
$_SESSION, $_COOKIE, $_ENV, $_FILES

$_REQUEST sollte uebrigens nur dann eingesetzt werden wenn ein Wert wirklich ueber beide Wege uebergeben werden kann. Dies ist zwar selten der Fall, aber durchaus moeglich. Ich hab mal ein Proxy-Script angefangen bei dem dies der Fall war.
Aber ansonsten sollte man sich immer festlegen ob man aus $_POST oder $_GET liest, denn in der Regel weiss man ja woher die Variable kommt.
 
Danke euch! Das hat schonmal irgendwie gewirkt, dass ich es hier gepostet habe! :rolleyes: :D :D

Da wir gerade beim Thema sind. Ich hab ein Loginskript geschrieben. Das funktioniert auch mit dem Firefox einwandfrei! Mit dem IE leider nicht immer. Sieht wie folgt aus das ganze, warscheinlich verhauts da auch irgendwie die Variablen:

formular.php
HTML:
<form action="login.php" method="post">
 <input type="text" name="name" size="20"><br><BR>
 <input type="password" name="pwd" size="20"><br><BR>
 <input type="submit" value="Login">
</form>

login.php
PHP:
session_start (); //natürlich als aller Erstes
...
if (mysql_num_rows ($result) > 0)
{
  $data = mysql_fetch_array ($result);
  $_SESSION["user_id"] = $data["Id"];
  $_SESSION["user_nickname"] = $data["Nickname"];
  $_SESSION["user_nachname"] = $data["email"];
  $_SESSION["status"] = $data["status"];

  header ("Location: intern.php");
}
else
{
 header ("Location: formular.php?fehler=1");
}

Naja auf alle Fälle teilweise beim Internet Explorer wenn man auf Submit klickt, tut sich nichts. Es läd nichtmal die Seite neu oder geschweigeden er geht auf die login.php, hmm sieht zumindest so aus. Dazu sei noch erwähnt, wenn man einen User angiebt, welcher nicht existiert, kommt aber meine Fehlermeldung. Sieht also so aus, als wenn er doch auf login.php kurz zugreift. Unten eben die Fehlerabfrage, welche dann zurück auf die formular.php mit Fehler 1 leitet.

formular.php
PHP:
if (isset ($_REQUEST["fehler"]))
{
  echo "Die Zugangsdaten waren ungültig.";
}

Vielen Dank für die Hilfe im Vorraus!

kjh
 
Arbeite mal, wie schon erwähnt mit den Variablen $_GET und $_POST und nicht mit $_REQUEST.


Zeige dann mal noch die MYSQL Abfrage.
 
Hi,

stimmt, da hat sich noch ein REQUEST eingeschlichen! Habs jetzt auch mit POST und GET probiert, jedoch beides mal mit dem selbem Effekt. Hier noch der komplette Quelltext von der login.php:

PHP:
<?php
session_start ();

$connectionid = mysql_connect ("localhost", "tbo", "***"); //nur das passwort ver**
if (!mysql_select_db ("***", $connectionid))
{
  die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT Id, Nickname, Kennwort, email, status FROM benutzerdaten WHERE (Nickname like '".$_POST["name"]."') AND (Kennwort = '".md5 ($_POST["pwd"])."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
  $data = mysql_fetch_array ($result);

  $_SESSION["user_id"] = $data["Id"];
  $_SESSION["user_nickname"] = $data["Nickname"];
  $_SESSION["user_nachname"] = $data["email"];
  $_SESSION["status"] = $data["status"];

  header ("Location: intern.php");
}
else
{
 header ("Location: formular.php?fehler=1");
}
?>

Denke mal das hat irgendwas mit den "Headerrei" zu tun. Hab es inzwischen im Konquerer unter Linux und auf nem MAC ausprobiert, funktioniert überall super! Nur im IE nicht.

Danke für die Hilfe!
 
Zuletzt bearbeitet:
Hallo nochmal zusammen,

ich weiß jetzt woran es liegt! Ein Bekannter von mir hat es bei sich ausprobiert und bei ihm gehts. Der einzige Unterschied: Er hat bei den Internet optionen sein Sicherheitslevel auf "niedrig" stehen. Heißt also es wird wohl vom IE als unsicher eingestuft.

Wie kann ich das jetzt umgehen? Ich mein die Session sache ist doch alltäglich...

Danke!

kjh
 
Wahrscheinlich wird kein Cookie angelegt, der für die Session notwendig ist. Wenn bei dir in der PHP Config die Option session.use_trans_sid nicht aif on oder 1 steht, musst du die SessionID manuel an die nächste Seite weitergeben. Les dir dazu mal alles über Session auf http://de.php.net durch.
 
Hi Danke für den Hinweis! Hab gleich mal ein bisschen damit rumprobiert:

login.php:
PHP:
$ses=session_id();
	 header ("intern.php?ses=".$ses."");

Und dann hab ich noch eine checkuser.php, welche praktisch immer überprüft ob denn der User auch angemeldet ist, bei geschützten Bereichen:

PHP:
session_start ();
$ses=$_GET["ses"];
if (!isset ($ses))
{
  header ("Location: formular.php");
}

Result da draus ist jetzt, dass es doch eigentlich theoretisch klappen sollte. Jedoch nach einer Anmeldung kommt nur ein weißer Screen. Gibt es da irgendwelche logischen Erklärungen dafür?

Danke nochmal für die Hinweise!

kjh
 
Du musst auf jeder Seite die Session ID wieder zuordnen.
Also:
PHP:
$ses=$_GET["ses"]; 
if (!isset ($ses)) 
{ 
  header ("Location: formular.php"); 
exit;
} 
session_start();
session_id($ses); #Oder musste das vor session_start()?
 
Zurück