form übergibt kein $_POST?

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

  • form übergibt kein $_POST?

    Hallo,

    ich habe versucht mir eine (sehr einfache) Seite zum vergleichen von Text-Dateien zu schreiben.
    Der Vergleich an sich hat auch ganz gut geklappt, war aber umständlich, da ich die Dateien vorher per Hand auf den Server hochladen musste.

    Also wollte ich versuchen das ganze mit Upload zu machen.

    PHP-Code:
    <?
    session_start();
        echo '
        <head><basefont face="arial"><style type="text/css">
        <!--
         p { font-family:Arial,sans-serif; font-size:10pt; }
         a:link { text-decoration:none; font-weight:none; color:#000000; }
         a:visited { text-decoration:none; font-weight:none; color:#000000; }
         a:hover { text-decoration:none; font-weight:none; }
         a:active { text-decoration:underline; font-weight:bold; }
        -->
        </style></head>
        ';
        
    if (empty($_POST['file1']) OR empty($_POST['file2']))
    {
        echo '
        <form enctype="multipart/form-data" action="vergleich.php" method="POST">
        Datei 1:&nbsp;&nbsp;&nbsp;<input type="file" name="file1"><br>
        Datei 2:&nbsp;&nbsp;&nbsp;<input type="file" name="file2"><br><br>
        <input type="submit" value="Vergleichen">
        </form>
        ';
    }
    else
    {
        $file       = $_POST['file1'];
        $dateiname    = basename($file);
        copy($file, "/files/1/" . $dateiname); 
        $path       = "c:/Web/files/1/";
        $open       = fopen($path . $dateiname, "r");
        $i          = 0;
            
        while (!feof($open))
        {
            $datei1[$i] = fgets($open, 4096);
            $i++;
        }
        fclose ($open);
        
        $file       = $_POST['file2'];
        $dateiname  = basename($file);
        copy($file,"/files/2/" . $dateiname); 
        $path       = "c:/Web/files/2/";
        $open       = fopen($path . $dateiname, "r");
        $i          = 0;
        
        while (!feof($open))
        {
            $datei2[$i] = fgets($open, 4096);
            $i++;
        }
        fclose ($open);
        
        $count  = $i;
        $i      = 0;
        $error  = 0;
        
        echo '<table>';
        
        while ($i <= $count)
        {
            echo '<tr>';
            echo '<td>'.$datei1[$i].'</td>';
            echo '<td>';
            
            if ($datei1[$i] == $datei2[$i])
            {
               echo '<font color="black" size="5">=</font>';
            }
            else
            {
                echo '<font color="red" size="5">!=</font>';
                $error++;
            }
            
            echo '</td>';
            echo '<td align="right">'.$datei2[$i].'</td>';
            echo '</tr>';
            $i++;
        }
        
        echo '</table><br>';
        echo 'Es gab '.$error.' Unterschiede'; 
    }
    ?>
    Nun passiert folgendes:
    Wenn ich beim Formular auf den submit-button drücke, erscheint wieder das formular, egal ob ich Dateien angegeben habe, oder nicht.
    Ich habe versucht die Überprüfung des $_POST mit empty, !isset und sogar $_POST['file1'] == "" zu verändern, jeweils mit und ohne der 2. Bedingung, aber egal was, immer kommt das Formular wieder.
    Ich habe auch schon versucht die $_POSTs mit echo auszugeben auf der formularseite, für den fall, dass ich einfach eine Falsche Bedingung habe, aber nicht hilft.

    Sieht jemand von euch vielleicht spontan den Fehler? Ich schau jetzt schon seid mindestens 1 Stunde über das lächerliche Stück Quelltext x_X

  • #2
    Re: form übergibt kein $_POST?

    1.
    PHP-Code:
    print_r($_POST);
    print_r($_FILES); 
    2. lesen:
    http://www.php.net/manual/de/languag...predefined.php
    http://dclp-faq.de/q/q-formular-upload-php4.html
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      PHP-Code:
      $HTTP_POST_VARS[varibale] = $_POST[variable
      ich glaube manche server unterstützen nur die lange version... (warum sollte es sie sonst geben)

      Kommentar


      • #4
        Original geschrieben von Kexx
        ich glaube manche server unterstützen nur die lange version... (warum sollte es sie sonst geben)
        $_GET ist ab php v 4.1 und davor was es eben $HTTP_GET_VARS ... das ist der ganze unterschied.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Ich selbst hatte auch mal das Problem, dass bei einem User meines Scriptes der enctype-Parameter im Form-Tag nicht akzeptiert wurde. Woran es lag kann ich ehrlich gesagt nicht beantworten.
          [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
          [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

          Kommentar


          • #6
            solange der threadstarter $_POST verwendet, um auf $_FILES zuzugreifen, ists eigentlich egal, was in $_GET steht.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              if (empty($_POST['file1']) OR empty($_POST['file2']))

              in $_POST['file1'] oder $_POST['file2'] wird auch nichts drin stehen...

              wenn dann $_FILES['file1']
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                Ok, vielen Dank für die Hinweise (vor allem wahsaga für den 2. Link), habs nun endlich hinbekommen.

                Das Script ist zwar etwas arg simpel, aber sollte jemand mal ein einfaches Beispiel brauchen, hier der code:
                PHP-Code:
                <?
                    echo '
                    <head><basefont face="arial"><style type="text/css">
                    <!--
                     p { font-family:Arial,sans-serif; font-size:10pt; }
                     a:link { text-decoration:none; font-weight:none; color:#000000; }
                     a:visited { text-decoration:none; font-weight:none; color:#000000; }
                     a:hover { text-decoration:none; font-weight:none; }
                     a:active { text-decoration:underline; font-weight:bold; }
                    -->
                    </style></head>
                    ';

                if (empty($_FILES['file']['name'][1]) OR empty($_FILES['file']['name'][0]))
                {
                    echo '
                    <form enctype="multipart/form-data" action="vergleich.php" method="POST">
                    Datei 1:&nbsp;&nbsp;&nbsp;<input type="file" name="file[]" /><br>
                    Datei 2:&nbsp;&nbsp;&nbsp;<input type="file" name="file[]" /><br><br>
                    <input type="submit" value="Vergleichen" />
                    </form>
                    ';
                }
                else
                {
                    ################################################# FILE 1 #########################################
                    $move = move_uploaded_file($_FILES['file']['tmp_name'][0], "c:/web/site/files/1/".$_FILES['file']['name'][0]);
                    if (!$move)
                    {
                        $error    = 1;
                        echo 'Upload von Datei 1 (';
                        echo $_FILES['file']['name'][0];
                        echo ' in tmp '.$_FILES['file']['tmp_name'][0].') nicht erfolgreich<br>';
                    }
                    else
                    {
                        $open       = fopen("c:/web/site/files/1/".$_FILES['file']['name'][0], "r");
                        $i          = 0;

                        while (!feof($open))
                        {
                            $datei1[$i] = fgets($open, 4096);
                            $i++;
                        }
                        fclose ($open);
                    }
                    ################################################### FILE 2 ##########################################
                    $move = move_uploaded_file($_FILES['file']['tmp_name'][1], "c:/web/site/files/2/".$_FILES['file']['name'][1]);
                    if (!$move)
                    {
                        $error    = 1;
                        echo 'Upload von Datei 2 (';
                        echo $_FILES['file']['name'][1];
                        echo ' in tmp '.$_FILES['file']['tmp_name'][1].') nicht erfolgreich<br>';
                    }
                    else
                    {
                        $open       = fopen("c:/web/site/files/2/".$_FILES['file']['name'][1], "r");
                        $i          = 0;

                        while (!feof($open))
                        {
                            $datei2[$i] = fgets($open, 4096);
                            $i++;
                        }
                        fclose ($open);
                    }
                    ############################################ VERGLEICH ##########################################
                    if ($error != 1)
                    {
                        $count  = $i;
                        $i      = 0;
                        $error  = 0;

                        echo '<table>';

                        while ($i <= $count)
                        {
                            echo '<tr>';
                            echo '<td>'.$datei1[$i].'</td>';
                            echo '<td>';

                            if ($datei1[$i] == $datei2[$i])
                            {
                               echo '<font color="black" size="5">=</font>';
                            }
                            else
                            {
                                echo '<font color="red" size="5">!=</font>';
                                $error++;
                            }

                            echo '</td>';
                            echo '<td align="right">'.$datei2[$i].'</td>';
                            echo '</tr>';
                            $i++;
                        }

                        echo '</table><br>';
                        echo 'Es gab '.$error.' Unterschiede';
                    }
                    else
                        echo 'Die Operation konnte nicht durchgeführt werden';
                }
                ?>

                Kommentar

                Lädt...
                X