Datei wird nicht ausgeführt

Azi

Erfahrenes Mitglied
Ich habe eine PHP-Seite (index.php) erstellt, in der man in ein Textfeld den Code einer Batchdatei schreibt. Die PHP-Datei speichert den eingegebenen Text in die Datei "eingabe.bat". Dann führt sie die Datei "bat.bat" aus. Die bat.bat führt die eingabe.bat aus und speichert deren Ausgabe in die "ausgabe.php". Diese ausgabe.php soll von meiner PHP-Seite index.php angezeigt werden. Nur klappt das leider nicht so richtig... Alle Dateien liegen im selben Ordner.

index.php
PHP:
<html>
<body>
<?php

if($action)
{
$file=fopen("eingabe.bat","w");
fputs($file,$_REQUEST['Eingabe'] );
fclose($file);
exec('bat.bat');
header('Location: ausgabe.php');
exit();
}
else
{
echo "<form method=\"post\" action=\".$PHP_SELF.\">";
echo "<textarea name=\"Eingabe\" cols=\"50\" rows=\"20\"></textarea>";
echo "<input type=\"Submit\" name=\"Eingabe\" value=\"Senden\">";
echo "</form>";
}

?>

</body>
</html>
 
Entschuldigung, ich bin ein großer Anfänger, die Seite habe ich nicht so ganz verstanden... Ich weiß nur, das ich so auf diese Werte nicht zugreifen kann. Könntest du mir bitte sagen, wie das auf meinem Beispiel aussehen würde?
 
Anstelle von Request einfach POST
also
PHP:
$_REQUEST['Eingabe']
wird zu
PHP:
$_POST['Eingabe']
Außerdem musst du dem Submitbutton einen anderen Namen geben, denn sonst steht in Eingabe ja Senden :-)
Gruß GalaxyWarrior
 
Oh... Hupsala, das ging ja einfach. Danke! Aber es funktioniert dennoch nicht... Die Batchdateien funktionieren, es muss an etwas anderem liegen...
 
Hallo!

Und wenn wir schon beim Thema Superglobale sind, dann solltest Du aus:
PHP:
echo "<form method=\"post\" action=\".$PHP_SELF.\">";
dieses machen:
PHP:
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">";
Gruss Dr Dau
 
Danke, aber das hat leider auch nichtb geklappt... Aber ich habe gerade gemerkt, dass ich die falsche Datei geupdatet habe :-( . Jetzt erschein immer die gleiche Seite mit dem Textfeld
Zur Sicherheit zeig ich mal meine bat.bat:
Code:
@echo off
cls
if exist ausgabe.php (
del ausgabe.php
)
echo ^<html^> >>ausgabe.php
echo. >>ausgabe.php
echo ^<body^> >>ausgabe.php
echo. >>ausgabe.php
echo ^<pre^> >>ausgabe.php
echo. >>ausgabe.php



call eingabe.bat >>ausgabe.php



echo. >>ausgabe.php
echo ^</pre^> >>ausgabe.php
echo. >>ausgabe.php
echo ^</body^> >>ausgabe.php
echo ^</html^> >>ausgabe.php
exit

Und nochmal die index.php:

PHP:
<html>
<body>
<?php

if($action)
{
$file=fopen("eingabe.bat","w");
fputs($file,$_POST['Eingabe']);
fclose($file);
system('bat.bat');
header('Location: ausgabe.php');
exit();
}
else
{
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">";
echo "<textarea name=\"Eingabe\" cols=\"50\" rows=\"25\"></textarea>";
echo "<input type=submit value=\"Ausführen\">";
echo "</form>";
}

?>

</body>
</html>
 
Zuletzt bearbeitet:
1. Codeoptimierung:
PHP:
<?php
    if($action) {
        $file=fopen('eingabe.bat','w');
        fputs($file,$_POST['Eingabe']);
        fclose($file);
        system('bat.bat');
        header('Location: ausgabe.php');
        exit();
    } else {
?>
<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
<textarea name="Eingabe" cols="50" rows="25"></textarea>
<input type="submit" value="Ausf&uuml;hren" />
</form>
<?php } ?>

<html>
<body>

</body>
</html>

2. Hat sich in Zwischenzeit erledigt ;-)
 
1. Danke für die Optimierung Aber ich würde es so machen, oder sehe ich da etwas falsch?

PHP:
<?php
    if($action) {
        $file=fopen('eingabe.bat','w');
        fputs($file,$_POST['Eingabe']);
        fclose($file);
        system('bat.bat');
        header('Location: ausgabe.php');
        exit();
    } else {
?>


<html>
<body>

<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
<textarea name="Eingabe" cols="50" rows="25"></textarea>
<input type="submit" value="Ausf&uuml;hren">
</form>


</body>
</html>

<?php } ?>

2. War es "...fputs($file,$ $_POST['Eingabe']);..."? Hab ich beim durchlesen bemerkt...

3. :confused: Läuft immer noch nicht... Kann es sein, das es irgenwie etwas mit "if($action)" sein kann? Denn er zeigt mir immer den else-Bereich...
 
Zuletzt bearbeitet:
Es fehlt noch ein:
HTML:
<input type="hidden" name="action" />
dann wird zumindest schonmal das Formular verarbeitet (in die eingabe.bat eingetragen) und die ausgabe.php geöffnet..... allerdings fügt die bat.bat den Text aus der eingabe.bat nicht in die ausgabe.php ein.

[edit]
In die ausgabe.php wird nur dieses eingetragen:
HTML:
<html> 
 
<body> 
 
<pre> 
 
 
</pre> 
 
</body> 
</html>
[/edit]
 
Zuletzt bearbeitet:
Zurück