webmaster resource
+ Webmaster Forum von Webmaster-Resource.de » Webcoding » PHP (Moderatoren: Christian Felken, » тнє $υι¢ι∂є « ™)
|-+ fopen() / fclose() klappt nicht
Username:
Password:

Seiten: [1]
Topic Tools  
Read 03. Januar 2008, 16:23:50 #0
GRotO

fopen() / fclose() klappt nicht

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^^

Code:
<?
$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 "&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;";
    }
    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>
            &nbsp;
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <input type="submit" name="senden" value="eintragen">&nbsp;
            <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&auml;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].",&nbsp;".$tag."&nbsp;".$monat."&nbsp;".$jahr."&nbsp;-&nbsp;".$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("&nbsp;","",$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\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
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("&nbsp;","",$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("&nbsp;","",$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 228

Ist 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...
« Letzte Änderung: 03. Januar 2008, 16:29:09 von GRotO »
Offline  
Read 03. Januar 2008, 18:44:16 #1
Zeus

Re: fopen() / fclose() klappt nicht

könnte allerdings auch drann liegen das du, da es im unterordner liegt, mit fopen auf eine falsche datei verweist

zb. das das
 $datei=fopen("gbuch.txt","r");

-> $datei=fopen("ordnername/gbuch.txt","r"); heißen müsste


dann mal zur 2en frage ... warum kein mysql ? wenn du jeden eintrag in ner neuen datei speicherst wird das alles sehr schnell unübersichtlich

und weiter

if ($eintrag) { eintrag(); }

das kannste auch kürzer schreiben

if ($eintrag) eintrag();

geschweifte klammern nur dann wenn du einen anweisungsblock hast

so dann das nächste

Code:
    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 "&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;";
    }
    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";
   
    }

du weist das du php code unterbrechen kanst, einen html teil dafiniern und den php code wiederaufnehmen ?

sieht etwa so aus

Code:
<?php
for($x=0;$x<$y;$x++){
?>

<h1>Das ist der <?=$X;?> durchlauf</h1>
<?php
}
?>


das nächste

Code:
   $tag=date("d.");
    $m=array("Januar","Februar","M&auml;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].",&nbsp;".$tag."&nbsp;".$monat."&nbsp;".$jahr."&nbsp;-&nbsp;".$zeit;
    $sekunden=date("U");

was soll das den schonwieder ? du kanst das einfacher machen ... der parameter M (edit by Zeus : F geht auch) giebt den monat aus, den kannst du dann auf deutsch "switchen"

...

sofar

ich hab noch eine letze frage ...

wo hast du den code rauskopiert ? der ist grauenhaft...

denk mal über mysql nach

mfg







============================================================

Edit by тнє $υι¢ι∂є: Habe deinen Post "inhatlich" überarbeitet!
Anmerkung by тнє $υι¢ι∂є: Würdest du beim lesen etwas besser aufpassen, dann hätest du gemerkt, das er die CHMOD rechte bereits auf 0777 hatte, und es hat dennoch nicht funktioniert!


BTW: schick mir mal per PM die IP von dem TS wo du zurzeit dein unwesen treibst! (hab dich von der Ignore liste genommen!)


gute nacht!

============================================================
Zeus: auch auf den verdacht das selfphp dir zwar was sagt aber nicht viel, der parameter F geht genauso, er stellt das ausgeschriebene wort da
« Letzte Änderung: 05. Januar 2008, 22:33:05 von Zeus »

Gott ist Tod (Friedrich Nietzsche)
Offline  
Read 06. Januar 2008, 21:52:31 #2
GRotO

Re: fopen() / fclose() klappt nicht

Hi!

Danke erstmal für die ANtwort^^

Habe den code von irgendner Seite. Keine Ahung welche...
Keine Ahnung, warum ich kein MySQL nehme... Kannst du mir ein GB Script empfehlen? Kann nicht wirklich PHP und schongarnicht mit Datenbanken arbeiten...
Offline  
Read 06. Januar 2008, 22:18:17 #3
» тнє $υι¢ι∂є « ™

Re: fopen() / fclose() klappt nicht

wir haben auf der hauptseite (Tricks > PHP) auch ein PHP + MYSQL Guestbook... auf jeden fall mal einen blick wert....


Offline  
Read 07. Januar 2008, 16:59:14 #4
GRotO

Re: fopen() / fclose() klappt nicht

Danke!
Werd ich mir mal anguken...
Offline  
Seiten: [1]
Gehe zu: