Ankündigung

Einklappen
Keine Ankündigung bisher.

Läuft Skript auf PHP/4.0.6 und generelle fragen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Läuft Skript auf PHP/4.0.6 und generelle fragen

    Hallo,

    ich habe ein Skript erstellt, das mir Dateien hochläd und automatisch an
    der richtigen stelle auf der html-seite einen link einfügt. Zum testen habe
    ich php 4.4.0, laufen sol es letztendlich auf Apache/1.3.20 (Linux/SuSE)
    PHP/4.0.6 ... daher ein paar fragen:

    1. muss ich etwas verändern, damit es auf dem alten php läuft?
    (ich habe was von $HTTP_POST_FILES anstatt $_FILES gelesen, reicht da
    einfaches suchen&ersetzen oder muss ich noch mehr beachten?)

    2.generelle verbesserungsvorschläge?

    3. derzeit muss ich dem verzeichnis und der datei in die das programm
    schreibt die chmodfreigabe 777 geben. gibts dafür auch ne andere
    variante? wenn ich diese rechtevergabe richtig verstanden habe, kann
    jetzt jeder die zieldatei verändern und in das verzeichnis schreiben...


    PHP-Code:
    <?php
    if($_POST["pw"]=="passwort"){

    $uploaddir '../upload/';

    //alte Datei einlesen
    $dateialt=file("material.htm");
    print (
    "arrayl�nge am anfang: " .sizeof($dateialt));

    //Suchstring aus Fachauswahl erstellen.
    $suchwort="";


    //Suchwort in der alten Datei suchen und Zeile merken
    while((substr_count($dateialt[$i],$suchwort)<1)&&($i<205)){
        
    $i++;
        }


    //alle Zeilen ab Einf�gestelle eins weiterr�cken
    for($j=sizeof($dateialt); $j>=$i$j--){
    $dateialt[$j]=$dateialt[$j-1];
    }

    //�nderungsdatum ermitteln
    $datum getdate();

    //neue Zeile einf�gen
    $dateialt[$i]="[*]<a href=\"" .$_FILES['userfile']['name'] ."\">" .$_POST["titel"
    .
    "</a> <span class=\"kleingedruckt\"> (aktualisiert am " .$datum[mday] ."." .$datum[mon] ."." .$datum[year] .")</span>";


    //neue Datei schreiben
    $dateineu=fopen("material.htm","w");
    $g=sizeof($dateialt)-1;
    for (
    $k 0$k <= $g$k++) {
        
    fputs($dateineu$dateialt[$k]);
    }
    fclose($dateineu);


    //Datei hochladen und Erfolg oder Miserfolg melden

    print "<pre>";
    if (
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir $_FILES['userfile']['name'])) {
       print 
    "File is valid, and was successfully uploaded.  Here's some more debugging info:\n";
       
    print_r($_FILES);
    } else {
       print 
    "Possible file upload attack!  Here's some debugging info:\n";
       
    print_r($_FILES);
    }
    print 
    "</pre>";
    } else {
    print 
    "Falsches Passwort";
    ?>

    Vielen Dank im Voraus
    Bernhard


  • #2
    Zu 1.
    Da habe ich leider keine Ahnung von.

    Zu 2.
    PHP-Code:
    <?php
    if($_POST["pw"]="passwort"){
    ?>
    Bringt so erstmal gar nichts, da du eine Zuweisung (=) und keinen Vergleich machst (==).
    Ausserdem wäre es besser das Passwort nicht in der Datei zu speichern, sondern nur
    zwei "Fingerabdrücke" zu vergleichen.
    durch
    PHP-Code:
    <?php
    if(md5($_POST["pw"]) == "e22a63fb76874c99488435f26b117e37"){ // Der lange String ist der md5-hash von "passwort"
    ?>
    Das Änderungsdatum kannst du einfacher mit http://de3.php.net/manual/en/function.strftime.php ermitteln:
    PHP-Code:
    <?php
    $datum 
    strftime("%d.%m.%Y"); // String in der Form TT.MM.YYYY
    ?>
    Zu 3.
    Ich kenn mich da auch nicht gut aus, aber ich meine die 2. 7 bedeutet, dass die Gruppe, der die Datei
    gehört alles damit machen darf. Eventuell kannst du die Gruppe der Datei/des Verzeichnisses auf die
    Gruppe in der PHP ausgeführt wird ändern und dann chmod auf 770 ändern. Aber wie gesagt, da habe
    ich echt kaum Ahnung.
    Water Wars - Jetzt anmelden: http://waterwars.de

    Kommentar


    • #3
      Danke für die Antwort.

      den Tippfehler mit dem == habe ich korrigiert.
      Das mit dem md5-hashes kann jedenfalls nicht schaden, drum werd ichs auch umsetzen, aber bringts was? ich meine, wenn jemand den phpcode auf dem server lesen kann, dann wird er dort auch so genügend anstellen und nach seinen wünschen ändern können, oder irre ich mich da? kommt man an die quelltexte aus php-dateien ohne zugrif auf den server? die werden doch alle geparst?

      so was wie strftime habe ich gesucht, danke für den Tipp! getdate() kam mir schon so umständlich vor :wink:
      wegen den gruppen: ich hab im endeffekt nur mein ftp-programm zum rumstellen der freigaben, dort konnte ich mir noch nicht mal die gruppen anzeigen lassen, geschweige denn ändern (zumindest habe ich nichts gefunden)

      schönes Wochenende
      Bernhard

      Kommentar


      • #4
        Zitat von derda
        wenn jemand den phpcode auf dem server lesen kann, dann wird er dort auch so genügend anstellen und nach seinen wünschen ändern können, oder irre ich mich da? kommt man an die quelltexte aus php-dateien ohne zugrif auf den server? die werden doch alle geparst?
        In der Regel kommt man nich an den Sourcecode, ich habe aber z.B. schon
        einmal gesehen, dass der PHP-Interpreter ausgefallen ist und von der Seiten
        der Sourcecode ungeparst ausgegeben wurde. Auch ist es einfach ein
        besserer Stil Passwörter nicht im Klartext zu speichern.

        Gruß Jan
        Water Wars - Jetzt anmelden: http://waterwars.de

        Kommentar


        • #5
          Re: Läuft Skript auf PHP/4.0.6 und generelle fragen

          Zitat von derda
          1. muss ich etwas verändern, damit es auf dem alten php läuft?
          (ich habe was von $HTTP_POST_FILES anstatt $_FILES gelesen, reicht da
          einfaches suchen&ersetzen oder muss ich noch mehr beachten?)
          Zunächst einmal kannst du diese Ersetzung so vornehmen bzw. musst dies auch tun. Allerdings musst du dabei beachten, dass die $HTTP_*-Variablen im Gegensatz zu den superglobalen Arrays nicht global gültig sind und somit als Parameter an Funktionen übergeben werden müssen, damit sie dort gültig sind.

          Kommentar


          • #6
            Zitat von JK
            Auch ist es einfach ein
            besserer Stil Passwörter nicht im Klartext zu speichern.
            Gruß Jan
            Ok, dann werd ichs mir gleich von anfang an richtig angewöhnen.

            Zitat von xabbuh
            Zunächst einmal kannst du diese Ersetzung so vornehmen bzw. musst dies auch tun. Allerdings musst du dabei beachten, dass die $HTTP_*-Variablen im Gegensatz zu den superglobalen Arrays nicht global gültig sind und somit als Parameter an Funktionen übergeben werden müssen, damit sie dort gültig sind.
            sehr schön, dann muss ich ja kaum was abändern, aber falls ich später noch was komplexeres mache, ist das mit den funktionen gut zu wissen.

            Grüße
            Bernhard

            Kommentar

            Lädt...
            X