Hi!
Ich wollte mir gerade ein einfaches und etwas modifiziertes Gästebuch ohne MySQL instalieren, nur kommen immer einiege Fehler, die ich nicht so ganz verstehe. Das Script müsste eigentlich funktionieren, es speichert aber einfach nicht. Währe nett, wenn sich einmal jemand den Script angucken würde^^
<?
$adminpasswort="admin";
$myemail="deine@email.adresse";
$email_senden="nein";
$eintrag = isset($_POST['eintrag']) ? $_POST['eintrag'] : "";
$senden = isset($_POST['senden']) ? $_POST['senden'] : "";
$nname = isset($_POST['nname']) ? htmlspecialchars($_POST['nname']) : "";
$email = isset($_POST['email']) ? htmlspecialchars($_POST['email']) : "";
$hpage = isset($_POST['hpage']) ? htmlspecialchars($_POST['hpage']) : "";
$kommentar = isset($_POST['kommentar']) ? $_POST['kommentar'] : "";
$kommentar = strip_tags($kommentar,"<b><i><strong>"); // Mehr Sicherheit
$admin_login = isset($_GET['admin_login']) ? $_GET['admin_login'] : "";
$admin = isset($_POST['admin']) ? $_POST['admin'] : "";
$loeschen = isset($_POST['loeschen']) ? $_POST['loeschen'] : "";
$passwort = isset($_POST['passwort']) ? $_POST['passwort'] : "";
$to_delete = isset($_POST['to_delete']) ? $_POST['to_delete'] : "";
if ($eintrag) { eintrag(); }
else if ($senden) { auswertung($kommentar,$nname,$hpage,$email); }
else if ($admin_login) { admin_login(); }
else if ($admin) { admin($passwort); }
else if ($loeschen) { loeschen($to_delete); }
else gaestebuch_zeigen();
function gaestebuch_zeigen ()
{
global $PHP_SELF;
echo <<<FORMULAR
<h1>Gästebuch</h1>
<center>
<FORM METHOD="POST" ACTION="{$_SERVER['PHP_SELF']}">
<INPUT TYPE="SUBMIT" NAME="eintrag" VALUE="Neuer Eintrag">
</FORM>
</center>
FORMULAR;
$eintrag=array();
$lesen=array();
$teil=array();
if (file_exists("gbuch.txt")) {
$datei=fopen("gbuch.txt","r");
while (!feof($datei)) {
$lesen=fgets($datei,100000);
array_push($eintrag,$lesen);
}
array_pop($eintrag);
arsort($eintrag);
foreach ($eintrag as $zeile) {
$teil=explode("|",$zeile);
$sekunden=$teil[0];
$zeit=$teil[1];
$name=$teil[2];
$email=$teil[3];
$hpage=$teil[4];
$text=$teil[5];
echo "<table border=\"0px\" cellspacing=\"0px\" cellpadding=\"0px\" width=\"324px\" style=\"font-size:10pt;\">";
echo "<tr>";
echo "<td height=\"40px\" width=\"275px\" background=\"images/gb_oben_links.gif\" style=\"color:#FFFFFF; padding-bottom:4px;\">";
echo " <img src=\"images/gb_person.gif\"> $name";
echo "</td>";
echo "<td background=\"images/gb_oben_rechts.gif\" style=\" padding-bottom:4px;\">";
if ($email!="") {
echo "<a href=\"mailto:$email\"><img src=\"images/gb_mail.gif\" width=\"19\" height=\"19\" border=\"0\" vspace=\"0\"></a> ";
}
echo "<a href=\"http://www.habbo.de/home/$name\" target=\"blanc\"><img src=\"images/gb_home.gif\" width=\"19\" height=\"19\" border=\"0\" vspace=\"0\"></a>\n";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td background=\"images/gb_mitte.gif\" colspan=\"2\" style=\"padding-left:20px; padding-right:20px;\">";
echo "<img src=\"http://www.habbo.de/habbo-imaging/avatarimage?user=$name&action=std&frame=3&direction=3&head_direction=3&gesture=:-)&size=s&img_format=gif\" align=\"left\">$text";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td height=\"15px\" background=\"images/gb_unten.gif\" colspan=\"2\">";
echo "</tr>";
echo "</table>";
echo"<br>\n";
}
}
echo "<p align=\"right\"><a href=\"{$_SERVER['PHP_SELF']}?admin_login=true\">Admin</a>\n";
}
function eintrag()
{
global $PHP_SELF;
global $email;
global $nname;
global $hpage;
global $kommentar;
$ua=getenv("HTTP_USER_AGENT");
if (1*strpos(strtolower($ua),"msie")>0) {
$breite1=38;
$breite2=62;
} else {
$breite1=22;
$breite2=30;
}
echo <<<EINTRAG
<p align="right"><a href="{$_SERVER['PHP_SELF']}">zum Gästebuch</a></p>
<table cellpadding="5" cellspacing="5" width="100%">
<tr>
<td align="center">
<h1>Eintrag ins Gästebuch</h1><p>
<FORM action="{$_SERVER['PHP_SELF']}" method="post">
<table width="310">
<tr>
<td>
Habbo Nick:
</td>
<td>
<input type="text" name="nname" size="$breite1" maxlength="40" VALUE="$nname">
</td>
</tr>
<tr>
<td>
Email:*
</td>
<td>
<input type="text" name="email" size="$breite1" VALUE="$email">
</td>
</tr>
<tr>
<td colspan="2">
Nachricht:<br>
<textarea name="kommentar" rows="6" cols="$breite2" VALUE="$kommentar"></textarea>
</td>
<td>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="senden" value="eintragen">
<INPUT TYPE="reset" VALUE=" löschen ">
</td>
<td>
</td>
</tr>
<tr>
<td>
<br>* Freiwillig
</td>
</tr>
</table>
</FORM>
</td></tr></table>
EINTRAG;
}
function auswertung ($kommentar,$nname,$hpage,$email)
{
global $PHP_SELF;
global $myemail;
global $email_senden;
echo "<p align=\"right\"><a href=\"{$_SERVER['PHP_SELF']}\">zum Gästebuch</a></p>\n";
####### Die Angaben werden von überflüssigen Zeichen befreit #######
$kommentar = stripslashes ($kommentar);
$kommentar = trim ($kommentar);
$nname = stripslashes ($nname);
$nname = trim ($nname);
$hpage = stripslashes ($hpage);
$hpage = trim ($hpage);
$email = stripslashes ($email);
$email = trim ($email);
####### Das Datum und die Zeit wird ermittelt #######
$tag=date("d.");
$m=array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
$monat=$m[1*date("m")-1];
$jahr=date("Y");
$tdw=array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag",);
$x=date("w");
$zeit=date("H:i:s");
$anm=$tdw[$x].", ".$tag." ".$monat." ".$jahr." - ".$zeit;
$sekunden=date("U");
####### Definition der Fehlermeldung #######
$zurueck="Klicken Sie <a href=\"javascript:history.back()\"><b>hier</b></a>, um zum Formular zurückzukehren und die Fehler zu beheben.</center>";
####### Überprüfunge auf Fehler #######
if ((empty($kommentar)) || ((!ereg(".+@.+\..+", $email)) && (!empty($email))) || (empty($nname))) {echo "<center><br><br><br><h1>Fehler !</h1><br><br>";}
### Kommentar ###
if (empty($kommentar))
{ echo "Du hast keine Nachricht für eingegeben.<br><br>"; echo "$zurueck\n"; }
### Email ###
else
if(!ereg(".+@.+\..+", $email)&& !empty($email)) {
echo "Du hast eine falsche Emailadresse angegeben.<br><br>"; echo "$zurueck\n"; }
### Name ###
else
if (empty($nname))
{ echo "Du hast deinen Nick nicht eingegeben.<br><br>"; echo "$zurueck\n"; }
####### Alles in Ordnung #######
else {
####### Daten werden gespeichert #######
$komm=ereg_replace(chr(10),"<br>",$kommentar);
if (!file_exists("gbuch.txt")) { $datei=fopen("gbuch.txt","w"); fclose($datei); }
$gbfile=fopen("gbuch.txt","a");
fputs($gbfile,"$sekunden|$anm|$nname|$email|$hpage|$komm\n");
fclose($gbfile);
####### FALLS $email_senden="ja", WIRD EINE EMAIL AN $myemail GESENDET #######
if ($email_senden=="ja")
{
$subject = "Eintrag";
$header = "From: Gästebuch <$myemail>\n";
$nachricht="Zeit - $anm\nName - $nname\nEmail - $email\nText - $komm";
mail($myemail,$subject,$nachricht,$header);
}
echo "<center><br><br><br><h1>Die Daten wurden gesendet.</h1><br><br><br>\n";
echo "<a href=\"{$_SERVER['PHP_SELF']}\">Gästebuch erneut anschauen</a></center>";
}
}
function admin_login()
{
global $PHP_SELF;
echo <<<ADMINFORMULAR
<p align="right"><a href="{$_SERVER['PHP_SELF']}">zum Gästebuch</a></p>
<center><br><br>
<form action="{$_SERVER['PHP_SELF']}?admin=true" method="post">
Passwort:
<input type="password" name="passwort" size="20" maxlength="30">
<input type="submit" name="admin" value=" login ">
</form>
</center>
ADMINFORMULAR;
}
function admin($passwort)
{
global $PHP_SELF;
global $adminpasswort;
echo "<p align=\"right\"><a href=\"{$_SERVER['PHP_SELF']}\">zum Gästebuch</a></p>\n";
if ($passwort==$adminpasswort)
{
echo "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">";
echo "<table cellpadding=\"5\" cellspacing=\"5\" width=\"100%\">";
$eintrag=array();
$lesen=array();
$teil=array();
if (file_exists("gbuch.txt"))
{
$datei=fopen("gbuch.txt","r");
while (!feof($datei))
{
$lesen=fgets($datei,100000);
array_push($eintrag,$lesen);
}
array_pop($eintrag);
rsort($eintrag);
foreach ($eintrag as $zeile)
{
$teil=explode("|",$zeile);
$sekunden=$teil[0];
$zeit=$teil[1];
$name=$teil[2];
$email=$teil[3];
$hpage=$teil[4];
$text=$teil[5];
$time=ereg_replace(" ","",$zeit);
$time=ereg_replace(" ","",$time);
echo "<tr><td width=\"50\" align=\"right\" valign=\"top\">";
echo "<input type=\"radio\" name=\"to_delete\" value=\"$sekunden\"><br>";
echo "</td><td>";
echo"Zeit: $zeit<br>";
echo "Name: $name<br>";
echo "Email: $email<br>";
echo "Homepage: http://www.habbo.de/home/$name<br>";
echo "Kommentar: $text<br><br>";
echo "</td></tr>";
}
echo "<tr><td></td><td align=\"left\">";
echo "<input type=\"submit\" name=\"loeschen\" value=\"den markierten Eintrag löschen\"> ";
echo "<input type=\"reset\" value=\"abbrechen\"></td></tr>";
echo "</table></form>";
}
}
else
{
echo "<center><h1><br><br><br><br>Falsches Passwort!</h1>\n";
echo "<p align=\center\"><a href=\"{$_SERVER['PHP_SELF']}?admin_login=true\">Admin</a><center>\n";
}
}
function loeschen($to_delete)
{
global $PHP_SELF;
global $adminpasswort;
$zeile=array();
$tosave=array();
$to_delete=ereg_replace(" ","",$to_delete);
$to_delete=ereg_replace(" ","",$to_delete);
$datei=fopen("gbuch.txt","r");
while (!feof($datei))
{
$zeile=fgets($datei,100000);
$teil=explode("|",$zeile);
$datum=ereg_replace(" ","",$teil[0]);
$datum=ereg_replace(" ","",$datum);
if ($datum!=$to_delete) { array_push($tosave,$zeile); }
}
fclose($datei);
$datei=fopen("gbuch.txt","w");
foreach ($tosave as $x)
{
fputs($datei,"$x");
}
fclose($datei);
echo <<<FORMULAR
<p align="right"><a href="{$_SERVER['PHP_SELF']}">zum Gästebuch</a></p>
<center>
<h1>Der Eintrag wurde gelöscht</h1><br><br><br>
<a href="{$_SERVER['PHP_SELF']}">zum Gästebuch</a><br><br><br>
<form action="{$_SERVER['PHP_SELF']}" method="post">
<input type="hidden" name="passwort" value="$adminpasswort">
<input type="submit" name="admin" value="zurück zur Administration">
</form>
</center>
FORMULAR;
}
?><br>
Die Datei gbook.txt ist auch vorhanden und Hat die CHMOD Rechts 666 (habs auch schon mit 777 versucht, hat aber auchnicht funktioniert...)
Ich schreibe einfach nocheinmal die Fehler hin:
Warning: fopen(gbuch.txt) [function.fopen]: failed to open stream: Permission denied in /www/htdocs/w0095b94/test/gb/gaestebuch.php on line 225
Warning: fclose(): supplied argument is not a valid stream resource in /www/htdocs/w0095b94/test/gb/gaestebuch.php on line 225
Warning: fopen(gbuch.txt) [function.fopen]: failed to open stream: Permission denied in /www/htdocs/w0095b94/wipfel/gb/gaestebuch.php on line 226
Warning: fputs(): supplied argument is not a valid stream resource in /www/htdocs/w0095b94/test/gb/gaestebuch.php on line 227
Warning: fclose(): supplied argument is not a valid stream resource in /www/htdocs/w0095b94/test/gb/gaestebuch.php on line 228Ist also glaube ich irgendetwas mit fopen() und fclose()
Das ganze liegt in einem Unterordner. Wenn ich die Datei gaestebuch.php jetzt direkt aufrufe, klappt aufeinmal elles. nut mit include("gb/gaestebuch.php") funktioniert es nicht so ganz...