Fehler mit Variable - Cannot re-assign
Marcus Hammel
- php
1 Alexander Brock0 XaraX0 XaraX
0 Marcus Hammel
Hallo,
Ich habe 2 Dateien. Eine search.php, diese enthält:
<?php
require("integrate.php");
echo "Hello world";
?>
Ich will ersteinmal keine Funktion erhalten, sondern ersteinmal die Integration con integrate.php erreichen.
Im Sleben Ordner liegt nun auch die integrate.php
<?php
function FDSE_output ($search_script, $echo_verbose, $self_url, $path_to_perl)
{
# create a readable format for parameters
$params = 'is_shell_include=1 search_url=' . urlencode($self_url) . ' ';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach ($_POST as $key => $this) {
if (get_magic_quotes_gpc()) { #changed 0070
$this = stripslashes($this);
}
$params .= urlencode($key) . '=' . urlencode($this) . ' ';
}
}
else {
foreach ($_GET as $key => $this) {
if (get_magic_quotes_gpc()) { #changed 0070
$this = stripslashes($this);
}
$params .= urlencode($key) . '=' . urlencode($this) . ' ';
}
}
$command = "$path_to_perl $search_script $params 2>&1";
if ($echo_verbose) {
$hcommand = htmlspecialchars($command);
echo "<p class=FDSE><b>Trace:</b> running command:<br /><br />$hcommand</p>\n";
}
$output = shell_exec($command);
if ($echo_verbose) {
$len = strlen($output);
echo "<p class=FDSE><b>Trace:</b> command returned <b>$len</b> bytes of output.</p>\n";
}
return $output;
}
?>
Wenn ich nun search.php aufrufe, so erhalte ich aber folgenden Fehler:
Fatal error: Cannot re-assign $this in F:\xampp\htdocs\integrate.php on line 49.
Es dreht sich also um folgende Code-Zeile
foreach ($_POST as $key => $this) {
ich finde dort aber keinen Fehler? Was läuft hier falsch?
MfG,
Marcus
Hallo Freunde des gehobenen Forumsgenusses,
Es dreht sich also um folgende Code-Zeile
foreach ($_POST as $key => $this) {
$this ist reserviert, verwende einen anderen Namen für die Variable.
Gruß
Alexander Brock
Hallo Marcus,
hier eine abgespeckte Version gleicher Arbeitsweise der Funktion:
function FDSE_output ($search_script, $echo_verbose, $self_url, $path_to_perl)
{
$params = 'is_shell_include=1 search_url=' . urlencode($self_url) . ' ';
$quotes=get_magic_quotes_gpc();
if(!empty($_POST))
foreach ($_POST as $k=>$v)
$params.=urlencode($key).'='.urlencode(($quotes ? stripslashes($v) : $v)).' ';
else
foreach ($_GET as $k=>$v)
$params.=urlencode($key).'='.urlencode(($quotes ? stripslashes($v) : $v)).' ';
$command="$path_to_perl $search_script $params 2>&1";
$output =shell_exec($command);
if ($echo_verbose)
echo '<p class="FDSE"><b>Trace:</b> running command:<br /><br />'.htmlspecialchars($command).'</p>\n'.
'<p class="FDSE"><b>Trace:</b> command returned <b>'.strlen($output).'</b> bytes of output.</p>\n';
return $output;
}
Wenn ich nun search.php aufrufe, so erhalte ich aber folgenden Fehler:
Fatal error: Cannot re-assign $this in F:\xampp\htdocs\integrate.php on line 49.
ich finde dort aber keinen Fehler? Was läuft hier falsch?
Streng betrachte ist dort auch kein Fehler - zumal es nicht einmal ein Objekt ist. Aber die Variabel "this" ist schon etwas besonderes und man sollte sie wirklich nur in Objekten nutzen. Im obigen Beispiel schafft ein Austausch des Namen "this" in "thi" bereits Abhilfe; alerdings habe ich es dabei nicht belassen ;)
Gruß aus Berlin!
eddi
In Berichtigung:
function FDSE_output ($search_script, $echo_verbose, $self_url, $path_to_perl)
{
$params = 'is_shell_include=1 search_url=' . urlencode($self_url) . ' ';
$quotes=get_magic_quotes_gpc();
if(!empty($_POST))
foreach ($_POST as $k=>$v)
$params.=urlencode($k).'='.urlencode(($quotes ? stripslashes($v) : $v)).' ';
else
foreach ($_GET as $k=>$v)
$params.=urlencode($k).'='.urlencode(($quotes ? stripslashes($v) : $v)).' ';
$command="$path_to_perl $search_script $params 2>&1";
$output =shell_exec($command);
if ($echo_verbose)
echo '<p class="FDSE"><b>Trace:</b> running command:<br /><br />'.htmlspecialchars($command).'</p>\n'.
'<p class="FDSE"><b>Trace:</b> command returned <b>'.strlen($output).'</b> bytes of output.</p>\n';
return $output;
}
Gruß aus Berlin!
eddi
Hi,
Super. Danke euch beiden. Es lag wirklich nur an dem Namen der Variable. Danke für die verbesserte Version!