PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warnmeldung :: Ich weiß nicht warum


schurik198x
12.09.2007, 11:39:42
Hallo, schaut euch mal diesen PHP-Code an.
nachdem ich die Anweisung if ($abbruch == 0) eingefügt habe kommt wenn ich das ganze ausführe folgende Warnmeldung:
Warning: array_walk() [function.array-walk]: Unable to call trim_value() - function does not exist in C:\xampp\htdocs\xampp\Datacheck\html\check\upload.php on line 72
Ich weiß nicht woran das liegt, ohne diese If-Anweisung ist alles in Ordnung.
Kann mir jemand meinen Fehler sagen.
<?php
//++++++++++++++++++++++++++++++++++++++++++++++++++++++
//leere Felder kontrolieren

if ($_POST[versender]=="" || $_POST[versender]=="Ihr Name" || $_POST[e_mail]=="" || $_POST[e_mail]=="vorname.nachname@ptb.de" || $_POST[bemerkung]=="" )
{
echo '<a1><br />Fehlende Eingaben, wiederholen sie die Eingabe!';
$abbruch = 1;
}
elseif ($_FILES['datei']['name'] == "" )
{
echo '<a1><br />Es wurde keine Datei ausgewählt';
$abbruch = 1;
}
else
{
echo "<br /><a1>Hallo ".$_POST[versender]."<br />Emailadresse: \n".$_POST[e_mail]."<br />Ihre Bemerkung: \n".$_POST[bemerkung];
$abbruch = 0;
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Dateiupload

if ($abbruch == 0)
{
$uploaddir = 'upload/';
$uploadfile = $uploaddir . basename($_FILES['datei']['name']);
if (move_uploaded_file($_FILES['datei']['tmp_name'], $uploadfile))
{
echo "<br /><br /><b>Datei wurde erfolgreich hochgeladen.</b>\n";
echo "<br />Folgende Datei wurde hochgeladen: <b>\n".$uploadfile."</b>";
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Antivierenscan für hochgeladene Datei durchführen

$scan = "C:\\\"Programme\\AntiVir Workstation\\avscan.exe\" /GUIMODE=2 /PATH=\"C:\\xampp\\htdocs\\xampp\\Datacheck\\html\\check\\upload\\".$_FILES['datei']['name']."\"" ;
system($scan);

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Reportdatei suchen und den Inhalt durchsuchen
//Aktuellste Logfile finden

function listlogs($dir="." , $type="txt")
{
$logdir = "C:\\Dokumente und Einstellungen\\All Users\\Anwendungsdaten\\AntiVir Workstation\\LOGFILES\\";
foreach (glob("$logdir{*.LOG}",GLOB_NOCHECK|GLOB_BRACE|GLOB_NOESCAPE) as $filename)
{
$logs[] = $filename;
}
return $logs;
}
$log = listlogs(".","txt");
krsort($log);
$strpfad = reset ( $log );


//Logfile nach "FUND" durchsuchen und melden ob Virus oder nicht

$sb = '[FUND]';
$lg = file($strpfad);
array_walk($lg, 'trim_value');
$lg = implode(' ', $lg);
$lg = strip_tags($lg);
$woerter = explode(' ', $lg);
if(in_array($sb, $woerter))
{
echo "<b><br /><br />Virus gefunden! Vermeinden Sie es diese Datei zu öffnen.</b>";
echo "<br /><br /><br />Ihr IT-S Team!";
$virus = 1;
}
else
{
echo "<b><br /><br />Keine Gefahr, diese Datei enthält keinen Virus.</b>";
echo "<br /><br /><br />Ihr IT-S Team!";
$virus = 0;
}
function trim_value(&$value)
{
$value = trim($value);
}
if($virus == 1)
{
$virus = "Ja";
}
else
{
$virus = "Nein";
}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Eintragung in Datenbank

$db = mysql_connect("localhost", "root", "");
mysql_select_db("datacheck", $db);
$SQL = "INSERT INTO datacheck (name, email, bemerk, datei, datum, infi) VALUES('".$_REQUEST['versender']."', '".$_REQUEST['e_mail']."', '".$_REQUEST['bemerkung']."', '".$_FILES['datei']['name']."', NOW(''), '".$virus."')";
mysql_query($SQL, $db);
}
?>


An der stelle array_walk($lg, 'trim_value'); meldet er den Fehler.

Danke für Eure Hilfe.

@Work
12.09.2007, 12:23:26
Guten Morgen,

ich bin mir nicht sicher, aber ich glaube der Fehler liegt hier
//Logfile nach "FUND" durchsuchen und melden ob Virus oder nicht

$sb = '[FUND]';
$lg = file($strpfad);
array_walk($lg, 'trim_value');
$lg = implode(' ', $lg);
$lg = strip_tags($lg);
$woerter = explode(' ', $lg);
if(in_array($sb, $woerter))
{
echo "<b><br /><br />Virus gefunden! Vermeinden Sie es diese Datei zu öffnen.</b>";
echo "<br /><br /><br />Ihr IT-S Team!";
$virus = 1;
}
else
{
echo "<b><br /><br />Keine Gefahr, diese Datei enthält keinen Virus.</b>";
echo "<br /><br /><br />Ihr IT-S Team!";
$virus = 0;
}
function trim_value(&$value)
{
$value = trim($value);
}
if($virus == 1)
{
$virus = "Ja";
}
else
{
$virus = "Nein";
}

sollte der Funktionsaufruf nicht so aussehen? (ohne "&")

function trim_value($value)

und muss die Funktion nicht vor dem Aufruf im Script stehen?

MfG

PS: Ich flieg jetzt nach Malle, also viel Spass noch^^.

defabricator
12.09.2007, 12:31:48
Seit php 4 kann die Funktionsdefinition auch "nach" dem eigentlichen Aufruf stehen.
Das gilt allerdings nur, wenn die Definition unkonditionell erfolgt. In einem if Block wird alles von oben nach unten ausgeführt<?php
// kein Problem
foo();
function foo()
{
echo 'foo';
}

// Problem
if (TRUE)
{
bar();
function bar()
{
echo 'bar';
}
}

schurik198x
12.09.2007, 12:33:12
Vielen DANK
deine Vermutung war genau richtig.

Viel Spaß auf Malle...