Gästebuch von PHP4 auf PHP5 modifizieren

robinkoe

Grünschnabel
Hallo,

ich bin letztens mit meiner Homepage zu einem anderen Provider gewechselt, Seitdem funktioniert mein Gästebuch nicht mehr. Habe mir schon xampp runtergeladen, ob ich vllt selbst was raus bekomme. aber auch da funktioniert das gästebuch nicht - es sind aber genau die unveränderten dateien, die auch noch auf dem alten server funktionieren.

au meinem rechner habe ich xampp control panel version 2.5

der neue server läuft mit php 5

was der alte server hatte weiss ich nicht. bring ich morgen in erfahrung. jedenfalls muss ich bei meinem neuen websace dateien in ordner "html" kopieren und beim alten ist es "httpdocs".

das gästebuch schreibt nicht in die datei gbuch.txt, gibt aber auch nicht die fehlermeldung raus. die berechtigungen auf dem server sind gesetzt auf 777.

hier ist der code von der gbuch/index.php (also das gb ansich) und der wird inkludiert in der haupt-index.php

PHP:
$limit = 10;


	if($gbuch == "speichern")
{




if(!$name or !$eintrag)
{
echo "fehler";
}

else
{

$db = fopen("gbuch/gbuch.txt","a+");
$time = date("H:i");


#Das aktuelle Datum
$date = date("d.m.Y");
$nl = chr(13) . chr(10);

#Eintrag wird bearbeitet
$eintrag = ereg_replace("<","&lt;",$eintrag);
$eintrag = ereg_replace(">","&gt;",$eintrag);
$eintrag = preg_replace("/\r\n|\r|\n/", "<br>", $eintrag);
$ein = "$time|$date|$eintrag|$name$nl";

#Eintrag in die Datei
$schreib = fputs($db,$ein);

echo "<div class=text>Eintrag erfolgt.</div><br><br>";

fclose($db);
}

}






echo "
 <form name=\"eintragen\" method=\"post\" action=\"?gbuch=speichern\">
  <table width=\"$tabellenbreitetotal\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\">

    <tr>
      <td width=\"50\" class=text>Name</td>
      <td width=\"400\"> <input type=\"text\" name=\"name\" size=\"25\" class=\"form\"></td>
    </tr>
    <tr>
      <td valign=\"top\" class=text>Text</td>
      <td><textarea name=\"eintrag\" cols=\"40\" rows=\"6\" class=\"form\"></textarea></td>
      </tr>
     <tr>
      <td valign=\"top\" class=text></td><td class=text><a href=\"javascript:document.getElementsByName('eintragen')[0].submit()\" name=\"Submit\" value=\"eintragen\" class=blog>Absenden</a> |
      <a href=\"javascript:document.getElementsByName('eintragen')[0].reset()\" class=blog>Löschen</a></td>
    </tr>
  </table>
</form>

<br><br>";







$datei = "gbuch/gbuch.txt";
$file = file($datei);


$num = count($file);

if(!$page)
{
$start = 0;
$ende = $limit;
}
else
{
$start = $page * $limit;
$ende = $start + $limit;
}


if(!isset($rev))
{
$rev = count($file);
$rev--;
}

for($i = $start; $i < $ende; $i++)
{
$data = $file[$rev];
$data = explode("|",$data);

if($i > $num or $data[0] < "0")
{
echo "";
}
else
{

$rev++;
echo "<div class=content_headline><img src=images/pfeil_headline.gif border=0>&nbsp;$data[3]</div>
<div class=content_datum>$data[1] $data[0]h | Eintrag #$rev</div>
";
$rev--;
echo "
<div class=content_trennlinie></div>";



echo "<div class=text>$data[2]</div><br><br><br>";
$rev--;
}
}

$total = count($file);
$seiten = ceil($total / $limit);


echo "Seite";
for($j=0;$j<$seiten;$j++)
{
$rev = ($total - ($j * $limit)) - 1;
echo " <a href=\"?gbuch=show&page=$j&rev=$rev\">$j</a>";
}

wie gesagt, es hat so alle funktioniert.

vielen dank schonmal :)
 
Hallo!
Unter obigem Link stehen auch Lösungen dafür.
Die jedoch nur funktionieren sofern die notwendigen Funktionen nicht vom Hoster deaktiviert worden sind.
Besser ist es also gleich das Script an heutige Anforderungen anzupassen.
Schliesslich könnte eine Funktion, die heute noch funktioniert, morgen schon deaktiviert sein. ;)

Gruss Dr Dau
 
Hey, danke schonmal soweit :)

Habe mir den Kram durchgelesen, hab aber keine Idee, wo ich das an meinem Script anwenden soll.

Gruss
Robin
 
Zuletzt bearbeitet:
Hallo!
Die jedoch nur funktionieren sofern die notwendigen Funktionen nicht vom Hoster deaktiviert worden sind.
Besser ist es also gleich das Script an heutige Anforderungen anzupassen.
Schliesslich könnte eine Funktion, die heute noch funktioniert, morgen schon deaktiviert sein. ;)

Gruss Dr Dau

Hm? Ich seh da irgendwie grade nur die Hinweise auf die superglobalen...

Und an robinkoe:
Du fragst Werte aus der URL bzw. aus Formularen ab. Diese stehen ab sofort nicht mehr im globalen Raum (also per $var) zur Verfügung, sondern in den superglobalen Arrays $_POST (Formulare), $_GET (URL) und $_COOKIE (Cookie ;) ).
 
Also erstmal sollte man sich natürlich eine Sicherungskopie zulegen. ;)

Dann wäre es noch gut zu wissen über welche Methode Dein Formular die Daten verschickt.
Wenn ich jetzt mal davon ausgehe dass die Methode POST ist, dann wird z.B. aus $gbuch ein $_POST['gbuch'].
Also im grunde ganz einfach. ;)

Um nicht das ganze Script ändern zu müssen, kannst Du am Anfang des Scripts die Variablen setzen:
PHP:
$gbuch = $_POST['gbuch'];
Für die übrigen Formularfelder machst Du es genauso.

Edith sagt:
Hm? Ich seh da irgendwie grade nur die Hinweise auf die superglobalen...
*räusper* Ähm, ja..... da war ich mit meinen Gedanken wohl gerade woanders. ;)
 
Zuletzt bearbeitet:
Hi,

Die jedoch nur funktionieren sofern die notwendigen Funktionen nicht vom Hoster deaktiviert worden sind.
Besser ist es also gleich das Script an heutige Anforderungen anzupassen.
Schliesslich könnte eine Funktion, die heute noch funktioniert, morgen schon deaktiviert sein. ;)

meinst Du die fpassthru()-Aufrufe? Das soll wohl nur ein Beispiel für access-to-sicherheitstrakt-granted sein. ;)
Der Knackpunkt dort ist der Zugriff auf von aussen kommende Variablen.

LG
 
Ich werde mich da mal ranmachen heute abend :)

Nur zum Verstaendnis, ich muss die Variablen wie folgt setzen:

$name = $_POST['name'];
$eintrag = $_POST['eintrag'];

fuer time und date muss ich nichts aendern, da die nicht vom formular uebermittelt werden, richtig?

leider habe ich die ftp zugangsdaeten nicht hier um das zu testen.

Danke :>
 
Zurück