ohne mehr Quelltext wirds wohl schwierig...
Hallo zusammen,
hab ein sehr stranges Problem. Hab ein kleines Programm in PHP geschrieben (nichts weltbewegendes), auf meinem Test-Server (XAMP) läuft das einwandfrei, nur auf dem Webspace irgendwie nicht. Bin mit meinem Latein am Ende.
Problem:
Über einen Link rufe ich die aktuelle KW und das Jahr auf:
Hash: test.php?kw=3&jahr=2010
Normalerweise müssten mir jetzt die Variablen:
$_GET['kw'] (=3)
$_GET['jahr'] (=2010)
zur verfügung stehen. Nur wenn ich die beide oder auch nur einen von beiden ausgebe (echo) passiert NIX.
Wenn nur einer von beiden im Hash steht also
test.php?jahr=2010
kann ich ihn ausgeben, sobald das & dazu kommt is vorbei geht garnix mehr.
WORAN LIEGT DAS? Und das ist auch nur bei 2 Dateien der Fall, die für die Administration verwendet werden (also eine $_SESSION vergeben ist), wenn ich eine testdatei anlege, und einfach irgendwo auf dem GLEICHEN SERVER abspeichere kann ich ganz normal auf alle $_GET's zugreifen. ???
AHHHHHHHHHHHHHHHHHH!!!!!
Was ist kaputt?
ohne mehr Quelltext wirds wohl schwierig...
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Aufruf:PHP-Code:function kwkal($kw, $j) {
$mysql = mysql_query("SELECT * FROM prog WHERE KW = '$kw' AND Jahr = '$j'");
$exist = mysql_num_rows($mysql);
if($exist > 0) {$b = "<b>"; $be = "</b>";}
else {$b = ""; $be = "";}
if($_GET['kw'] == $kw) {$cl = "style=\"color:#FF0000;\"";}
elseif(keinenull(date('W')) > $kw || date('Y') > $j) {$cl = "style=\"color:#999999;\"";}
####keinenull ist eine andere kleine function, die die führungsnull bei W wegnimmt
else {$cl = "";}
echo "<a href=\"programm.php?kw=$kw&jahr=$j\" class=\"men\" ".$cl.">".$b.$kw.$be."</a>";
;}
funktion kwkal (3, $_GET['jahr')
PS: es funktioniert aber auch so nicht, wenn ich den $_GET in dieser besagten datei einfach irgendwo (auserhalb der function) ausgeben will.
Hash: test.php?jahr=2010&kw=3
Ausgabe: Jahr: , KW:PHP-Code:echo "Jahr: ".$_GET['jahr'].", KW: ".$_GET['kw'];
Hash: test.php?jahr=2010
Ausgabe: Jahr: 2010, KW:PHP-Code:echo "Jahr: ".$_GET['jahr'].", KW:".$_GET['kw'];
Aber wie gesagt, NUR in besagten, Dateien. (Kann hier leider nicht das ganze Projekt posten...)
Geändert von nerdlikeyou (18.01.2010 um 19:18 Uhr)
Ahhhh... habs gefunden... liegt wohl an der Funktion, die ich aus Sicherheitsgründen überall eingebaut hab
... hab sie auskommentiert und alles läuft, aber ich check nicht was daran falsch sein soll.PHP-Code:
if(is_array($_GET) && count($_GET)>1)
{
foreach($_GET as $key=>$get_var)
{
unset($_GET[$key]);
$_GET[$key] = mysql_real_escape_string(str_replace("\\", "", htmlspecialchars(str_replace("\'", "", $get_var), ENT_QUOTES)));
}
}
Hat jemand ne Idee?
Nimm einfach das unset raus - ist in dem Fall so oder so überflüssig.
Und oben bei der Prüfung statt count($_GET)>1 ein count($_GET)>0.
Zur Sicherheit trägt das aktuell nur bedingt bei. Insofern nur ein Parameter übergeben wird, wird nämlich nichts "gesichert".
Ganz abgesehen davon: schön, dass du selbst auf das Problem gestoßen bist - wir hätten hier wirklich nur mit der teuren Glaskugel helfen können...
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)