PHP Script läuft nicht mehr mit PHP 7

Hallo Community,

Im Jahre 2011 habe ich mit einem Bekannten PHP Scripte erstellt, um nicht mehr händisch etwa 144 Bilder pro Tag in eine Tabelle mit HTML zu schreiben, haben die Scripte das automatisch erledigt.

Das erste Script stellt ein Auswahl-Formular zur Verfügung, wo der Benutzer den Tag für die Anzeige auswählen kann. Beim absenden des Formulars wird der ausgewählte Tag via POST an das zweite Script
übergeben, welches die Bilder aus dem Ordner des ausgewälten Tages in eine Tabelle einbaut, und anzeigt.

Beide Scripte liegen im selben Ordner. In diesem gibt es für jeden Tag ein Unterverzeichnis ( 01 bis 31).

Es funktionierte einwandfrei. Ich kann nicht mehr sagen welche PHP Version auf dem Server zu diesem Zeitpunkt installiert war.

Irgendwann wurde die Seite eingestampft.

Jetzt wollen wir die beiden Scripte wieder auf einer neuen Seite nutzen. Auf dem Server läuft PHP 7. Die aus dem Jahre 2011 stammenden Scripte inklusive der Unterverzeichnisse für die Tage auf den Server kopiert.

Die Auswahlseite aufgerufen. Nichts geht. Da schon im Drop-Down des Formulars nicht mehr, so wie früher, die Tage angezeigt werden. Der Absende Button fehlt auch.

Meine Frage wie muss ich die Scripte änden das diese auch mit PHP 7 un den Nachfolgeversionen 7.1, 7.2, und später noch erscheinenden Versionen Funktionieren ?

Hinweis die Kommentare stehen alle in einer Zeile wird hier nur in der Anzeige umgebrochen !

Hier das Aufrufen Scrpt aufrufen.php:

<!-- Die nicht wichtige HTML Struktur habe ich weggelassen und führe nur den für PHP relavanten Teil auf --> 

<form action="verarbeiten.php" method="post">
 <fieldset>
  <legend>Datumsauswahl</legend>
   <table>
    <tbody>
     <tr>
      <th>Hinweis</th>
        <?php
           if (!empty($_POST)) {extract($_POST);}
           if (!empty($_GET)) {extract($_GET);}
           if (!empty($_ENV)) {extract($_ENV);}
           #echo "yesterday was ".date("Y-m-d", strtotime("-1 days"));
           $gestern=date("d", strtotime("-1 days"));
           $heute=date("d");
           #echo "Gestern war Tag ", $gestern,"<br>";
           #echo "Heute ist Tag ", $heute,"<br>";

        echo"<td><label>Der aktuelle Tag funktioniert (wenn man das Datum angibt)!</label></td>
       </tr>
       <tr>
       <th><label for=\"Tag\">Tag</label></th>
        <td>
         <select name=\"Tag\" id=\"Tag\">
           <option>bitte w&auml;hlen...</option>";
             $verz=opendir ('.');
             while (false !== ($filename = readdir ($verz)) ) {
              if($filename != "." && $filename != ".." && is_dir($filename) && ereg("[0-3][0-9]{1,2}",$filename)) $files[] = $filename;
             }
             sort($files);
             foreach ($files as $dir)
             echo "<option>",$dir,"</option>";
             closedir($verz);
          ?>
       </select>
     </td>
    </tr>
   </tbody>
  </table>
 </fieldset>
<p id="submit"><input value="Absenden" type="submit" /></p>
</form>

Das Verarbeiten Script verarbeiten.php:

<!-- Die nicht wichtige HTML Struktur habe ich weggelassen und führe nur den für PHP relavanten Teil auf --> 

<?php
         if ( isset ($_POST))
         {
          reset($_POST);
         #    foreach ($HTTP_POST_VARS as $k=>$elem)  {
         #        echo "$k: $elem<br>";
         #    }
         $tag_verz = $_POST['Tag'];
         #    echo "Der gew&auml;hlte Tag ist der : ", $tag_verz, "<br>";
         if ( strlen($tag_verz) != 2 ) {
         echo "<tr><th></th><td><strong>Falsche L&auml;nge des Tags. W&auml;hle einen anderen Tag bitte benutze das <a href=\"javascript:tausch('aufrufen.php','mainFrame')\">Formular</a></strong></td></tr>";
         }
         else {
         # Bilderanzeige Anfang
         if ( is_dir($tag_verz) ) {
          #echo "Verzeichnis ist vorhanden, &ouml;ffne das Verzeichnis $tag_verz";
          #chdir ($tag_verz);
         $verz=opendir ($tag_verz);
         # Beachte, das PHP programm öffnet das Unterverzeichnis, das HTML Skript ist immer noch im alten Verzeichnis, daher wird zur Anzeige der Bilddatei auch der Pfad angegeben.
         while (false !== ($filename2 = readdir ($verz)) ) {
          if($filename2 != "." && $filename2 != "..") $files2[] = $filename2;
         }
         sort($files2);
         foreach ($files2 as $bilddatei)
         echo "<tr><th class=\"bild\">$bilddatei </th><td class=\"bild\"><img src=\"$tag_verz/$bilddatei\" alt=\"Messung\" /><br /><a href=\"#top\" class=\"top\">Nach oben</a>&nbsp;&nbsp;<a href=\"javascript:tausch('aufrufen.php','mainFrame')\">Aktuelle Messung</a>&nbsp;&nbsp;<a href=\"javascript:tausch('start.html','mainFrame')\">&Uuml;bersichtsseite</a></td></tr>";
         closedir($verz);
         reset($_POST);
         # Bilderanzeige Ende
         }
         }
         }
?>

Über eine Antwort würde ich mich freuen, vielen Dank
Andreas

Hi!

Welche Fehlermeldung kommt denn?
Und bitte nicht mit „Keine“ antworten - denn dann sind PHP-Errors deaktiviert.

Also: PHP-Fehlermeldungen aktivieren, dann siehst Du auch, wo der Hund begraben liegt.

Aber es gibt auch genug Prüfprogramme (natürlich und vor allem online), die den PHP-Code auf 7.1-(und höher)-Kompatibilität prüfen können.

Zwischen PHP 5.x und PHP 7.x ist einiges passiert …

Grüße,
Tomh, der jetzt sicher nicht den PHP-Code durchcheckt …

PS: Habs trotzdem gemacht: ereg() ist schon seit mind. PHP 5.3 veraltet …
PPS: Hier kannst Du z.B. den Code checken lassen

1 Like

Das passt nicht zusammen zu

Drop-Down und Buttons sind HTML. Wie wäre es, wenn du alles zeigst und nicht nur das, was du denkst. Und natürlich wäre ein Link schön, damit man mal sehen kann, wie das bei dir konkret aussieht.

Für die späte Rückmeldung entschuldige ich mich. Hatte Probleme mit meinem Computer, so das ich nicht ins Internet kam. Diese konnte ich erst heute lösen.

Ich Danke für die Hinweise und deine Mühe. Das Einschalten der Fehlermeldungen und anschließende Auswerten brachten mich zur Lösung.

Habe ereg() durch preg_match() ersetzt anschließend Funktionierte alles wieder.

Für die späte Rückmeldung entschuldige ich mich. Hatte Probleme mit meinem Computer, so das ich nicht ins Internet kam. Diese konnte ich erst heute lösen.

Ich Danke für die Hinweise und deine Mühe. Das Einschalten der Fehlermeldungen und anschließende Auswerten brachten mich zur Lösung.

Habe ereg() durch preg_match() ersetzt anschließend Funktionierte alles wieder.

Lag nur am PHP-Code