'post' Anweisung funktioniert nicht!

Hallo!
Habe folgendes Problem:
Webhoster hat PHP Register_globals = Off
Eine Änderung auf on funktioniert aber per htaccess nicht.

Folgendes Script will ich laufen lassen:

<?php if(empty($action)) {
require\_once('home.php'); } if($action=='search') { $Result=$proxy-\>searchProducts($arr\_search); if ($Result['searchProductsResult']['Records'] \> "0") { echo search($Result['searchProductsResult']['Items']['Item'],$Keywords,$PriceMin,$PriceMax,$OrderBy,$OrderDirection,$Page,$PageSize); } else { echo nofounds($Keywords,$PriceMin,$PriceMax,$OrderBy,$OrderDirection); } } if($action=='csearch') { $Result=$proxy-\>searchProductsInCategory($arr\_categoryproducts); if ($Result['searchProductsInCategoryResult']['Records'] \> "0") { echo search($Result['searchProductsInCategoryResult']['Items']['Item'],$Keywords,$PriceMin,$PriceMax,$OrderBy,$OrderDirection,$Page,$PageSize); } else { echo nofounds($Keywords,$PriceMin,$PriceMax,$OrderBy,$OrderDirection); } } if($action=='impressum') { require\_once('impressum.php'); } if($action=='haftung') { require\_once('haftung.php'); } ?\> Habe nun folgendes gemacht: <?php switch($_GET['action'])
{ case "impressum": include ("impressum.php"); break; case "haftung": include ("haftung.php"); break; default: include ("home.php"); #startseite laden break; case "search": include ("$Result=$proxy-\>searchProductsInCategory($arr\_categoryproducts);"); break; } Leider funktioniert hier die Produktabfrage aber nicht. habe auch schon form action=GET gemacht---hat aber nichts gebracht. Wie kann ich dies ändern?

Register_globals = Off heißt doch nur, dass das ausführende Script den Inhalt eines Eingabefeldes nicht direkt als Variable bekommt (input name=„feldname“) wird nicht zu $feldname. Aber trotzdem musst du über $_POST[‚feldname‘] (bzw. $_GET…) auf den Inhalt zugreifen müssen.

Ich würde testweise ein Script aufrufen, das den Inhalt dieser Arrays anzeigt:
echo „$_GET:
\n“;
echo "

\n";
print\_r($\_GET);
echo "

\n";
echo „$_POST:
\n“;
echo "

\n";
print\_r($\_POST);
echo "

\n";

Wenn da nichts ankommt, dann würde ich zuerst mal die aufrufende Seite analysieren. Vielleicht wird gar nichts übergeben ?

Viel Glück, Jörg

Und wo soll ich dies einbinden?
Da wo das form post steht?
Dann kommt:

$_GET:
Array ( [action] => search [ShopID] => [WithImgOnly] => false [ShowDetail] => true [ImageSize] => 180 [Page] => 1 [PageSize] => 25 [PriceMin] => [PriceMax] => [OrderBy] => Rank [OrderDirection] => 2 ) $_POST:
Array ( [Keywords] => CD [x] => 34 [y] => 12 )

Und was bringt mir jetzt das bzw. was kann ich daraus auslesen?

Wie sieht denn das Formular aus?

Hallo,

Damit die Variablen bzw. Post Werte überhaupt in das script kommen, müssen in dem vorherigen Formular (script) alle Formularfelder ein Attribut name=„feldname“ haben. Die Werte dieser Formularfelder werden dann in das Array $_POST (bzw. $_GET) übernommen und zwar in der Form $_POST[‚feldname‘]. Die Namen müssen selbstverständlich alle unterschiedlich sein. Deswegen kann man am verarbeitenden Script nicht sehen, warum die Werte dort nicht ankommen.

Daher mein Vorschlag am Anfang des Scriptes zu prüfen, ob überhaupt Werte ankommen und ggf. das aufrufende Formular / Script zu überprüfen.

Leider habe ich bei der Formatierung beim Kopieren nicht aufgepasst, also nochmal der Codeschnipsel:

echo „$_GET:
\n“;
echo "

\n";
print\_r($\_GET);
echo "

\n";
echo „$_POST:
\n“;
echo "

\n";
print\_r($\_POST);
echo "

\n";

Viel Erfolg, Jörg

Kenne gerade den Codeschnipsel Trick nicht, die Anzeige verschluckt einiges. Also bitte die runden Klammern durch spitze Klammern, wie bei HTML Tags üblich, ersetzen:

echo "$_GET:
";
echo „(pre)“;
print_r($_GET);
echo „(/pre)“;
echo "$_POST:
";
echo „(pre)“;
print_r($_POST);
echo „(/pre)“;

Guten Tag,

Wie sieht denn das Formular aus?

Guten Tag,

Hallo!
Habe folgendes Problem:
Webhoster hat PHP Register_globals = Off
Eine Änderung auf on funktioniert aber per htaccess nicht.

Folgendes Script will ich laufen lassen:

// Füg das mal so ein…
$action = $_REQUEST[‚action‘];

Also super—Es funktioniert!!!
Aber ein Schönheitsfehler hats noch:

Warning: Division by zero in /var/www/web1460/html/guenstigerfinden/include/content.inc.php on line 55

Zeile 55 in der Datei:

$i = 500/$PageSize+1;

Hast nochmals einen Tipp?

Dennoch schon mal vielen Dank für den 1. Supertipp!!!

Ich machs immer so …
… indem ich einfach eine selbst geschriebene Funktion dazu benutze:

function formulardaten_einlesen(
// Einlesen der Formulardaten ohne Vorgabe Variablennamen
// Vorgabe, ob POST oder GET; Auslistung, wenn angefordert
$typ=‚post‘,
$lst=false)
{
global $crlf;
$typ = strtolower($typ);
if ($typ == ‚post‘) $mx = $_POST;
if ($typ == ‚get‘) $mx = $_GET;
if ($lst) echo ‚‘ .$crlf;
foreach ($mx as $key => $value) {
global $$key;
$$key = $mx[$key];
if ($lst) {
$x = $$key;
echo „$key $x$crlf“;
}
}
if ($lst) echo ‚‘ .$crlf;
}

Diese Funktion liest entweder die GET- oder POST-Daten ein, gibt sie, wenn $lst auf TRUE gesetzt ist, in der Seite als Tabelle aus (Entwicklerhilfe). Die Daten stehen dann global zur Verfügung. Vielleicht hilft es Dir bei Deinem Problem …

Achso,
$crlf = chr(13) . chr(10);

Gruß
Dieter