Variablen aus Formfeld übernehmen und in HREF verwenden

Du bist echt der Wahnsinn! Da haste gewiss mal in 3 Minuten geschrieben oder? :-)

Also er bringt leider PARSE ERROR UNEXPECTED T_STRING EXPECTING T_OLD FUNCTION ...Line 4



Glaube aber das liegt wohl daran:

PHP 5.2.6 with the following extensions available: cgi, ctype, date, dom, filter, hash, iconv, json, libxml, pcre, PDO, pdo_sqlite, posix, Reflection, session, SimpleXML, sockets, SPL, SQLite, standard, tokenizer, xml, xmlreader, xmlwriter

PHP 4.3.8 with the following extensions available: Turck MMCache, apache, ctype, file64, overload, pcre, posix, session, sqlite, standard, thumb, tokenizer, xml, zlib.

Also als php rennt er sie wohl nur unter 4.3.8. Kann ansonsten mit meinem kleinen WIssen nichts finden was dort falsch sein sollte.
Deswegen war wohl auch bei dem Programm wo ich versucht habe abzugucken es mit CGI scripts gelöst.

Das stimmt aber oder? Hab ich soweit richtig verstanden....

Code:
<?php
$KEY_1 = $_POST['location'];
$KEY_2 = $_POST['genre1'];

include ('settings.class.php');
$settings = new Settings();
$settings->KEY_1 = VALUE_1;
$settings->KEY_2 = VALUE_2;

?>

Hab das ehrlich gesagt mit dem VALUE nicht verstanen.....
 
Zuletzt bearbeitet:
OK, dann nochmal etwas genauer ;)

$settings ist ein Objekt der Klasse "Settings" (erstelllt durch new ...)
Die arbeitsweise der Klasse erlaubt es dir, jeden beliebigen Konfigurationsnamen hinter "$settings->" zu stellen. Willst du in deiner Konfigdatei z.B. eine Einstellung für ein Hauptverzeichnis haben, welche den Namen "basedir" mit dem Wert "/home/test/" hast,d ann sieht das so aus
PHP:
$settings->basedir = "/home/test/"
In der Konfigurationsdatei steht dann
Code:
basedir = /home/test/
Das kannst du mit jeder beliebigen Eigenschaft machen.
Bei dem einstellbaren Pfad könnte es z.B. so aussehen
PHP:
require_once ("settings.class.php"); // mein Code muss sich dann auch in einer Datei befinden, die sich "settings.class.php" nennt ;)

$settings = new Settings();

$dir = $_POST['location'];
$settings->dir = $dir; // der Key muss nicht "dir" sein, du kannst auch Pfad sagen, oder was dir gefällt.
// hier noch die anderen Felder aus dem Formlar auf die gleiche weiße abarbeiten

Be der Fehlermeldung fehlt leider die Datei, in der der Fehler auftritt. Wenn ich aber mit meiner Vermutung richtig liege, dann wird dort wohl wirklich nur PHP 4.x.x laufen :(
Setze zum Testen mal ganz an den Anfang deiner index.php folgenden Code udn rufe dann die Datei auf. Du erhälst dann eine Info-Seite, auf der unter anderem die PHP Version steht.
PHP:
<?php
phpinfo();
exit;
?>
Falls das der Fall ist, muss ich die Klasse etwas umbauen. Ist danna ber nicht mehr so schön in der Handhabung :-P

EDIT:
Habe an den Post mit der Klasse für PHP5 noch eine Version für PHP4 angehängt.
 
Zuletzt bearbeitet:
Glaub jetzt hab ich verstanden. :-)

Also PHP 4.3.8. Weiss nicht ob es was bringt aber 5.x.x ist auch drauf aber läuft wohl parallel zum anderen und nur über Port 9999. Kann man das beeinflussen?
 
ahhhh! Hab was rausgefunden. Mach mal langsam. Die PHPs müssen in einem speziellen Ordner liegen um mit PHP 5 ausgeführt zu werden.

ok 5.2.8 läuft. Was ne Geburt! Jetzt muss ich nur hier erstmal wieder alles sortieren und umschreiben bevor ich es ausprobieren kann.
 
Zuletzt bearbeitet:
Als ganz normales PHP oder als CGI? Ich hatte in der Wiki zu deinem System nämlich auch nur die Info gefunden, dass PHP 5 nur als CGI zur Verfügung steht. Aber wenn es so funktioniet, bin ich froh :)

Ansonsten: Falls es doch wieder Probleme gibt, hast du ja oben noch eine PHP 4 Version, mit der du es einmal testen kannst.
 
So habs hinbekommen. Sorry hab eben erst gesehen das du eine v4.x geschrieben hast noch! Tut mir leid.

Aber muss mal sagen bin schwer faziniert! Wie das funktioniert so wunderbar! ;-)

Aber wieso nimmt er das nicht?

Code:
  <tr>
    <td width="30%">&nbsp;Genre 1 Folder Name:</td>
    <td width="44%">&nbsp;
    <input name="genre1" type="text" size="30" maxlength="40" value="<?php include ('settings.class.php');$settings = new Settings();echo $settings->dir; ?>"></td>
    <td width="26%">&nbsp;</td>
  </tr>

und läuft als 5.x PHP....
 
Zuletzt bearbeitet:
War ja nicht viel Arbeit, dass auf PHP 4 umzustellen ;)

Wegen der Übersicht würde ich die beiden Zeilen include() und new ... an den Anfang der index.php stellen, so dass du dann nur noch den "echo" Teil zwischen value="" stehen hast.

Dann stellt sich mir des Weiteren die Frage, ob du in der settings.conf schon etwas drin stehen hast, also ob es dort überhaupt schon ein "dir = [...]" gibt. Wenn das nämlich nicht der Fall ist, wird auch nichts zurückgegeben (bzw $settings->dir ist dann "false").

Du könntest das auch noch erweitern, indem du ganz an den Anfang der index.php, also noch VOR dem include() ein
PHP:
error_reporting(E_ALL);
stellst, solange du entwickelst. Dann sehen wir auch eventuelle Fehlermeldungen, die sonst unterdrückt werden würde.
 
Danke dir vielmals nochmal. Läuft alles bestens. Echt ein Traum. Und gelernt hab ich auch wieder was! ;-)

Kannst mir aber bitte noch bei einer Sache diesbezüglich helfen? Hab hier die geklaute CGI aus einem anderen Programm. Zwar muss es am besten wenn ich mein index öffnen oder auch nur vor dem POST passieren. Die settings.conf muss per Telnet (CHMOD) die Rechte auf 0777 gesetz werden, ansonsten kann nichts rein geschrieben werden.

Code:
#!/mnt/syb8634/server/php5-cgi 
<?php

function chmod_R($path, $filemode) { 
    if (!is_dir($path)) 
        return chmod($path, $filemode); 

    $dh = opendir($path); 
    while (($file = readdir($dh)) !== false) { 
        if($file != '.' && $file != '..') { 
            $fullpath = $path.'/'.$file; 
            if(is_link($fullpath)) 
                return FALSE; 
            elseif(!is_dir($fullpath)) 
                if (!chmod($fullpath, $filemode)) 
                    return FALSE; 
            elseif(!chmod_R($fullpath, $filemode)) 
                return FALSE; 
        } 
    } 

    closedir($dh); 

    if(chmod($path, $filemode)) 
        return TRUE; 
    else 
        return FALSE; 
} 

	if(!is_dir("../tmp")) {
		mkdir("../tmp");  
  }
  chmod_R("../tmp", 0777);

  chmod("../mpdjb.conf", 0777);

  echo("<html><head><meta http-equiv=\"refresh\" content=\"0;http://127.0.0.1:8088/stream/file=/share/Apps/MPDJB/index.php\"></head><body bgcolor=\"FFFFFF\"></body></html>");  

?>
Wo bekommt der denn $path ect her bei so einem Script wenn sie nirgends ausgeschriben sind?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück