Daten speichern ?

mkoeni1

Erfahrenes Mitglied
Hallo Leute,

ich habe folgendes, selbstgebasteltes Skript das mir Unix-Befehle ausgibt. Wenn ich jetzt im else Fall auch den letzten Befehl per echo ausgegeben haben möchte zeigt er mir nichts an. Gehe ich richtig in der Annahme das bei einem Klick auf -> Go die Seite neu geladen wird und er seine $_COOKIES vergisst ? Obwohl er zuerst im if Fall diese angelegt hat ?

1. Wie kann ich dennoch bei keiner Eingabe in das Input-Feld (von einer Falsch-Eingabe mal abgesehen) den else Fall erreichen, sprich mit einer Ausgabe ?

2. Wie kann ich alle eingegebenen Kommandos untereinander ausgeben ?
etwa:
pwd -> /opt/lampp/htdocs/testing
uname -r -> 2.6.17-5mdv
(praktisch eine Art Historie)

PHP:
<?php
  session_start();
  error_reporting(E_ALL | E_ERROR);
  echo 'Linux Kommando <b>&Uuml;bersicht</b>';
 ?>
 
 <br />
 
 
  Bitte ein (UNIX)-Kommando eingeben:<br /> 
  <form action='<?php echo $PHP_SELF ?>' method='post'>
  <input type='text' name='commando'><br />
  
  <br />
  <input type='submit' name="send" value='Go'>
  
  </form>
<?php

$var = $_POST["commando"];
$_SESSION['linuxkommando'] = $var;
$send = $_POST["send"];

if(isset($send)){
    $_COOKIE['ausgabe'] = shell_exec(''.$_SESSION['linuxkommando'].'');
    echo "<pre>".$_COOKIE['ausgabe']."</pre>";
}
else{
    echo "<pre>zuletzt</pre>";
    echo "<pre>".$_COOKIE['ausgabe']."</pre>";
}

echo phpinfo();

?>
<br />
Stichwort: SED

Vielen Dank für eure Hilfe

Gruß
M
 
Warum speicherst du nicht alles in der Session? Das müsste doch leichter gehen und du bist nicht mehr davon abhängig, ob der Client-Browser Cookies erlaubt oder nicht.

Code:
<?php
  session_start();
  error_reporting(E_ALL | E_ERROR);
  echo 'Linux Kommando <b>&Uuml;bersicht</b>';
 ?>
 
 <br />
 
  Bitte ein (UNIX)-Kommando eingeben:<br /> 
  <form action='<?php echo $PHP_SELF ?>' method='post'>
  <input type='text' name='kommando'><br />
  
  <br />
  <input type='submit' name="send" value='Go'>
  
  </form>
<?php

$index = (session_is_registered ("counter") ? ($_SESSION["counter"] + 1 : 0));

$kommando{$index} = $_POST["kommando"];
session_register ($kommando{$index});

if(isset($_POST["kommando")){
    echo "<pre>".$_POST["text"]."</pre>";
}

    echo "<pre>Die letzten Kommandos:</pre>";
    for ($c=0; $c<$_SESSION["counter"]; $c++)
        echo "<pre>".$_SESSION['kommando' .$c]."</pre>";
?>

Das ganze habe ich mir nur im Kopf ausgedacht, müsste aber einigermaßen funktionieren. Sollte es noch immer nicht gehen oder du Verständnisprobleme damit hast, meld' dich am besten gleich noch einmal :) ...

MfG, Thomas D.
 
Hallo,

Danke, ich versuche es mal zum laufen zu bekommen. Im ersten Anlauf mit copy&paste hatte ich nicht so viel Erfolg.

Ist das Geheimnis, dass die Variablen mit:
PHP:
session_register($kommando{$index});

gespeichert werden müssen ?

Gruß
 
[phpf]session_register[/phpf] sollte nicht mehr verwendet werden, benutze statt dessen diese Zuweisung:

PHP:
$_SESSION['var'] = 'xxx';
 
@Felix Jacobi: Danke für die Info :)! Werde ich in meinen nächsten Projekten beherzigen ...

@mkoeni1: Die Schreibweise in den geschweiften Klammern erzeugt Variablen nach dem Muster $kommando0, $kommando1, $kommando2, usw.; d.h. wir speichern jedes eingetippte Kommando in der Session ab. Mit der "neuen" Schreibweise kannst du also - soweit ich das richtig vertanden habe - folgendes schreiben:

Code:
$_SESSION["kommando" .$c] = $_POST["kommando"];

Wie gesagt, probier's einfach mal aus und poste etwaige Fehler. Es kann gut sein, dass ich mich bei der einen oder anderen Zeile geirrt habe - habe das ganze ja aus dem Kopf heruntergetippt ohne zu testen. Lass' auf jeden Fall wieder was von dir hören :) ...

MfG, Thomas D.
 
Zuletzt bearbeitet:
@Thomas D.
wenn du mein Skript angeschaut hast? dann habe ich diese Zuweisung bereits gemacht:
PHP:
$var = $_POST["commando"];
$_SESSION['linuxkommando'] = $var;

Das Problem ist, dass wenn ich das Formular ohne Variablen abschicke (leeres Input Feld), geht er auch nicht in die if Fkt rein.:
PHP:
if(isset($send)){
    $_COOKIE['ausgabe'] = shell_exec(''.$_SESSION['linuxkommando'].'');
    echo "<pre>".$_COOKIE['ausgabe']."</pre>";
}
else{
    echo "<pre>zuletzt</pre>";
    echo "<pre>".$_COOKIE['ausgabe']."</pre>";
}

Ich möchte aber alle jemals eingegebenen Kommandos als eine Art Historie aufgelistet sehen.

pwd -> /opt/lampp/htdocs/testing
uname -r -> 2.6.17-5mdv
(praktisch eine Art Historie)


Gruß
 
Ja, das hast du, aber du gibt's die Sachen dann per Cookies aus, wovon ich persönlich keine Ahnung habe. Aus diesem Grund habe ich dir auch vorgeschlagen, Session zu verwenden.

Das Problem ist, dass wenn ich das Formular ohne Variablen abschicke (leeres Input Feld), geht er auch nicht in die if Fkt rein.

Warum sollte eine leere Eingabe (= kein Kommando) gespeichert werden :confused: Das macht doch irgendwie keinen Sinn ... Das Else habe ich ohnehin entfernt, da die History dann immer ausgegeben wird.
 
Zurück