Ankündigung

Einklappen
Keine Ankündigung bisher.

Skript funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • Skript funktioniert nicht

    Warum funktioniert dieses Skript nicht? Ich hab schon 'ne Stunde den Fehöler gesucht, aber ihn nicht gefunden. Wenn ich einen neuen Dateinamen angebe und auf umbenen drücke, erscheint eine weiße Seite, anstatt die Weiterleitung.

    PHP-Code:
    if( (isset($_POST['umbenennen'])) && (empty($_POST['dateiaktion'])) ){
        ?><div style="position: absolute; left: 5%; top: 3%; width: 40%; height: 40%; background-color: #EEE8CD; border: 1px solid">
        [img]images/fehler.gif[/img]
        <span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #9C9C9C; position: absolute; top: 20%; left: 34%">
        Ein Fehler ist aufgetreten:


        Sie haben keine Datei

        zum umbenennen ausgew&auml;hlt!
        </span>




            
        [url="exec.php?action=hochladen"]<span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #4F4F4F">Zur&uuml;ck zum Men&uuml;</span>[/url]
        <?php
        
    exit;



    if( (isset(
    $_POST['umbenennen'])) && (!empty($_POST['dateiaktion'])) ){
    ?>
    <form action="<?php $PHP_SELF ?>" method="post" style="position: absolute; left: 3%; top: 5%">
    <span style="font-family: arial; font-size: 9pt; font-weight: bold; color: #000000">
    Bitte geben Sie einen neuen Dateinamen ein:
    </span>


    <span style="font-family: arial; font-size: 8pt; color: #000000">
    (Die Endung muss auch angegeben werden, z.B.: .jpg oder .zip)



    <input type="text" size="25" name="newname">

    <input type="submit" name="umbenennen2" value="umbenennen" style="border: 1px solid; position: relative; top: 2px">
    </form>

    <?php
    if( (isset($_POST['umbenennen2'])) && (empty($_POST['newname'])) ){
    ?><div style="position: absolute; left: 5%; top: 3%; width: 40%; height: 40%; background-color: #EEE8CD; border: 1px solid">
        [img]images/fehler.gif[/img]
        <span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #9C9C9C; position: absolute; top: 20%; left: 34%">
        Ein Fehler ist aufgetreten:


        Sie haben keinen neuen

        Dateinamen angegeben!
        </span>




            
        [url="exec.php?action=hochladen"]<span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #4F4F4F">Zur&uuml;ck zum Men&uuml;</span>[/url]<?php
    exit;
    }
    $newname=basename($_POST['newname']);

    if( (isset(
    $_POST['umbenennen2'])) && (!eregi(".pdf$"$newname)) &&  (!eregi(".css$"$newname)) && (!eregi(".gif$"$newname)) && (!eregi(".jpg$"$newname)) && (!eregi(".jpeg$"$newname)) && (!eregi(".jpe$"$newname)) && (!eregi(".mpeg$"$newname)) && (!eregi(".mpg$"$newname)) && (!eregi(".mpe$"$newname)) && (!eregi(".qt$"$newname)) && (!eregi(".mov$"$newname)) && (!eregi(".rtf$"$newname)) && (!eregi(".png$"$newname)) && (!eregi(".mid$"$newname)) && (!eregi(".midi$"$newname)) && (!eregi(".txt$"$newname)) && (!eregi(".g$"$newname)) && (!eregi(".h$"$newname)) && (!eregi(".c$"$newname)) && (!eregi(".cc$"$newname)) && (!eregi(".hh$"$newname)) && (!eregi(".m$"$newname)) && (!eregi(".f90$"$newname)) && (!eregi(".avi$"$newname)) && (!eregi(".wav$"$newname)) && (!eregi(".zip$"$newname)) ){
    ?><div style="position: absolute; left: 5%; top: 3%; width: 40%; height: 40%; background-color: #EEE8CD; border: 1px solid">
        [img]images/fehler.gif[/img]
        <span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #9C9C9C; position: absolute; top: 20%; left: 34%">
        Ein Fehler ist aufgetreten:


        Falsche Endung!
        </span>




            
        [url="exec.php?action=hochladen"]<span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #4F4F4F">Zur&uuml;ck zum Men&uuml;</span>[/url]<?php
    exit;
    }

    if(!empty(
    $newname)){ 
    $dateiaktion=$_POST['dateiaktion'];
    rename("/srv/www/htdocs/web98/files/files/$sess_username/$dateiaktion""/srv/www/htdocs/web98/files/files/$sess_username/$newname");

    include(
    "/srv/www/htdocs/web98/files/hpworld.inc.php");
        
    $renamesql="UPDATE dateien SET name='$newname' WHERE benutzername='$sess_username' AND name='$dateiaktion'";
        
    mysql_query($renamesql);
        
    mysql_close();
    }

    }
    ?>

  • #2
    Solltest du glauben, dass sich jemand diese Buchstabenwüste ansieht, dann hast du wohl eher Pech. Wenn ich alleine die Zeile mit über 800 Zeichen sehe, habe ich schon keine Lust mehr, da auch noch einen Fehler zu suchen.

    Gruß
    phpfan

    Kommentar


    • #3
      Zitat von phpfan
      Solltest du glauben, dass sich jemand diese Buchstabenwüste ansieht, dann hast du wohl eher Pech. Wenn ich alleine die Zeile mit über 800 Zeichen sehe, habe ich schon keine Lust mehr, da auch noch einen Fehler zu suchen.

      Gruß
      phpfan
      Sorry, aber das Skript enthält diese Zeile. Dara kann ich auch nichts ändern.
      Kann mir denn niemand helfen?

      Kommentar


      • #4
        Erstmal, es wurde doch sicherlich ein fehler mit zeilenangabe ausgegeben, oder? Also warum sollen wir uns das ganze script angucken, wenn php das schon von allein spezifiziert?

        Kommentar


        • #5
          Zitat von phpmensch
          Sorry, aber das Skript enthält diese Zeile.
          Warum postest du dann nicht einfach die entsprechende Zeile?

          Kommentar


          • #6
            Dara kann ich auch nichts ändern.
            Warum das denn nicht? Grübel Muss man nicht verstehen, oder?

            Gruß
            phpfan

            Kommentar


            • #7
              Zitat von phpfan
              Dara kann ich auch nichts ändern.
              Warum das denn nicht? Grübel Muss man nicht verstehen, oder?

              Gruß
              phpfan
              Hast du 'ne andere Idee, wie man die Endung prüfen kann?
              Sonst könnte ja einer hingehen, eine Textdatei hochladen, die z.B. PHP-code mit 'ner Endlosschleife enthält und dann in .php umbenennen und schon ist der Server überlastet, möglicherweise sogar defekt.

              Kommentar


              • #8
                Zitat von phpmensch
                Hast du 'ne andere Idee, wie man die Endung prüfen kann?
                Mal kurz nachgedacht (was man ja ruhig mal machen darf) und ups, das ist doch ganz einfach und übersichtlich:
                PHP-Code:
                function is_valid_extension($filename)
                {
                   
                $info pathinfo($filename);
                   
                $extension $info["extension"];
                   
                   
                $extensions = array("pdf",  "css""gif""jpg""jpeg""jpe""mpeg",
                                       
                "mpg",  "mpe""qt",  "mov""rtf",  "png""mid",
                                       
                "midi""txt""g",   "h",   "c",    "cc",  "hh",
                                       
                "m",    "f90""avi""wav""zip");
                                        
                    return 
                in_array($extension$extensions);

                }
                if( (isset(
                $_POST['umbenennen2'])) && is_valid_extension($newname)) 
                Gruß
                phpfan

                Kommentar


                • #9
                  Zitat von phpfan
                  Zitat von phpmensch
                  Hast du 'ne andere Idee, wie man die Endung prüfen kann?
                  Mal kurz nachgedacht (was man ja ruhig mal machen darf) und ups, das ist doch ganz einfach und übersichtlich:
                  PHP-Code:
                  function is_valid_extension($filename)
                  {
                     
                  $info pathinfo($filename);
                     
                  $extension $info["extension"];
                     
                     
                  $extensions = array("pdf",  "css""gif""jpg""jpeg""jpe""mpeg",
                                         
                  "mpg",  "mpe""qt",  "mov""rtf",  "png""mid",
                                         
                  "midi""txt""g",   "h",   "c",    "cc",  "hh",
                                         
                  "m",    "f90""avi""wav""zip");
                                          
                      return 
                  in_array($extension$extensions);

                  }
                  if( (isset(
                  $_POST['umbenennen2'])) && is_valid_extension($newname)) 
                  Gruß
                  phpfan
                  Danke.

                  Kommentar


                  • #10
                    und $extension = $info["extension"]; kann man sich sogar auch noch sparen.

                    Kommentar


                    • #11
                      Zitat von Bruchpilot
                      und $extension = $info["extension"]; kann man sich sogar auch noch sparen.
                      Aber die Register_Globals sind bei mir auf off. Also muss man das auch angeben.

                      Leider geht mein Skript immer noch nicht. Es sieht jetzt so aus:

                      PHP-Code:
                      <?php
                      if( (isset($_POST['umbenennen'])) && (empty($_POST['dateiaktion'])) ){
                          
                      ?><div style="position: absolute; left: 5%; top: 3%; width: 40%; height: 40%; background-color: #EEE8CD; border: 1px solid">
                          [img]images/fehler.gif[/img]
                          <span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #9C9C9C; position: absolute; top: 20%; left: 34%">
                          Ein Fehler ist aufgetreten:


                          Sie haben keine Datei

                          zum umbenennen ausgew&auml;hlt!
                          </span>




                              
                          [url="exec.php?action=hochladen"]<span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #4F4F4F">Zur&uuml;ck zum Men&uuml;</span>[/url]
                          <?php
                          
                      exit;



                      if( (isset(
                      $_POST['umbenennen'])) && (!empty($_POST['dateiaktion'])) ){
                      ?>
                      <form action="<?php $PHP_SELF ?>" method="post" style="position: absolute; left: 3%; top: 5%">
                      <span style="font-family: arial; font-size: 9pt; font-weight: bold; color: #000000">
                      Bitte geben Sie einen neuen Dateinamen ein:
                      </span>


                      <span style="font-family: arial; font-size: 8pt; color: #000000">
                      (Die Endung muss auch angegeben werden, z.B.: .jpg oder .zip)



                      <input type="text" size="25" name="newname">

                      <input type="submit" name="umbenennen2" value="umbenennen" style="border: 1px solid; position: relative; top: 2px">
                      </form>

                      <?php
                      if( (isset($_POST['umbenennen2'])) && (empty($_POST['newname'])) ){
                      ?><div style="position: absolute; left: 5%; top: 3%; width: 40%; height: 40%; background-color: #EEE8CD; border: 1px solid">
                          [img]images/fehler.gif[/img]
                          <span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #9C9C9C; position: absolute; top: 20%; left: 34%">
                          Ein Fehler ist aufgetreten:


                          Sie haben keinen neuen

                          Dateinamen angegeben!
                          </span>




                              
                          [url="exec.php?action=hochladen"]<span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #4F4F4F">Zur&uuml;ck zum Men&uuml;</span>[/url]<?php
                      exit;
                      }
                      $newname=basename($_POST['newname']);


                      function 
                      is_valid_extension($filename)
                      {
                         
                      $info pathinfo($filename);
                         
                      $extension $info["extension"];
                         
                         
                      $extensions = array("pdf",  "css""gif""jpg""jpeg""jpe""mpeg",
                                             
                      "mpg",  "mpe""qt",  "mov""rtf",  "png""mid",
                                             
                      "midi""txt""g",   "h",   "c",    "cc",  "hh",
                                             
                      "m",    "f90""avi""wav""zip");
                                              
                          return 
                      in_array($extension$extensions);




                      if( (isset(
                      $_POST['umbenennen2'])) && (!is_valid_extension($newname)) ){
                      ?><div style="position: absolute; left: 5%; top: 3%; width: 40%; height: 40%; background-color: #EEE8CD; border: 1px solid">
                          [img]images/fehler.gif[/img]
                          <span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #9C9C9C; position: absolute; top: 20%; left: 34%">
                          Ein Fehler ist aufgetreten:


                          Flasche Dateiendung
                          </span>




                              
                          [url="exec.php?action=hochladen"]<span style="font-family: arial; font-size: 8pt; font-weight: bold; color: #4F4F4F">Zur&uuml;ck zum Men&uuml;</span>[/url]<?php
                      exit;
                      }

                      if( (isset(
                      $_POST['umbenennen2'])) && (is_valid_extension($newname)) ){
                      $dateiaktion=$_POST['dateiaktion'];
                      rename("/srv/www/htdocs/web98/files/files/$sess_username/$dateiaktion""/srv/www/htdocs/web98/files/files/$sess_username/$newname");

                      include(
                      "/srv/www/htdocs/web98/files/hpworld.inc.php");
                          
                      $renamesql="UPDATE dateien SET name='$newname' WHERE benutzername='$sess_username' AND name='$dateiaktion'";
                          
                      mysql_query($renamesql);
                          
                      mysql_close();
                      }

                      }
                      ?>

                      Kommentar


                      • #12
                        Richtig debuggen
                        1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
                        2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
                        3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
                        4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
                        5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
                        6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
                        7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

                        Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

                        Gruß
                        phpfan

                        Kommentar


                        • #13
                          Ich hab alles versucht. Aber das Skript will irgendwie nicht gehen.

                          Kommentar


                          • #14
                            Zitat von phpmensch
                            Zitat von Bruchpilot
                            und $extension = $info["extension"]; kann man sich sogar auch noch sparen.
                            Aber die Register_Globals sind bei mir auf off. Also muss man das auch angeben.
                            Nein, register_globals hat damit rein garnichts zu tun.
                            PHP-Code:
                            function is_valid_extension($filename)
                            {
                                
                            $extensions = array("pdf",  "css""gif""jpg""jpeg""jpe""mpeg",
                                                   
                            "mpg",  "mpe""qt",  "mov""rtf",  "png""mid",
                                                   
                            "midi""txt""g",   "h",   "c",    "cc",  "hh",
                                                   
                            "m",    "f90""avi""wav""zip");
                                
                            $info pathinfo($filename);                        
                                return 
                            in_array($info["extension"], $extensions);

                            Aber egal, Du hast erstmal völlig andere Probleme.

                            Kommentar


                            • #15
                              Die Dateiendung sagt absolut nichts über den Dateityp aus. Diese Antwort von karl-150 in deinem anderen Thema sollte dich da wohl eher weiterbringen.

                              Kommentar

                              Lädt...
                              X