Portal > Foren > PHP > PHP-Programmierung > Frage zu Tutorial (Gästebuch auf Textdatei basierend)
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 24.07.2008, 05:41 Nach oben    #21
Neuer Benutzer
 
Registriert seit: 21.07.2008
Beiträge: 17
Standard

Erledigt. Hier der Code:

PHP-Code:
<?php
require_once("recaptchalib.php");
// Der Name der Gästebuch-Datei lautet:
$datenbankdatei 'gaestebuch.txt';
$mailempfaenger 'alex.webmaster.sgm@gmail.com';

# the response from reCAPTCHA
$resp null;
# the error code from reCAPTCHA, if any
$error null;
  
// Überprüfung, ob die Datei vorhanden ist.
// wenn nicht vorhanden, dann versuche diese zu erstellen
// wenn das Erstellen nicht erfolgreich war (mangelnde Rechte), dann Skript abbrechen
if(!file_exists($datenbankdatei))
    if(!@
touch($datenbankdatei))
        die(
"Fehler: Die Datenbank ist nicht erreichbar.");

if(isset(
$_POST['button'])) {

// wenn das Formular abgeschickt wurde, dann führe das hier aus (Daten in die Datei eintragen)
   
// Überprüfe, ob Name und Text angegeben wurde - sonst kein Eintrag
    
if($_POST['name'] == "" || $_POST['email'] == "" || $_POST['eintrag'] == "") {
    echo 
'Es fehlen Angaben. Bitte vollst&auml;ndig ausf&uuml;llen.';
    } else {
// Überprüfe, ob Captcha richtig eingegeben wurde
    
$privatekey "6LePhgIAAAAAAOHiXY91Kc5tqdpBRqZew541fdKu";
    
$resp recaptcha_check_answer ($privatekey,
                                
$_SERVER["REMOTE_ADDR"],
                                
$_POST["recaptcha_challenge_field"],
                                
$_POST["recaptcha_response_field"]);
        if (!
$resp->is_valid) {
          die (
"Sicherheitscode nicht korrekt. " .
           
"(Fehler: " $resp->error ")");
        } else {
        

// als erstes werden die Daten zu einem langen string zusammengefasst. Damit die einzelnen Variablen später wieder getrennt werden können setzen wir ein Trennzeichen. In diesem Fall habe ich mich für || entschieden.
// das \n am Ende sorgt dafür, dass ein Zeilenumbruch in der Textdatei gemacht wird. Das ist für das Auslesen wichtig!
        
$eintrag date('d.m.Y - H:i:s').' || '.$_SERVER["REMOTE_ADDR"].' || '.$_POST['name'].' || '.$_POST['email'].' || '.$_POST['site'].' || '.$_POST['eintrag']."\r\n";

// Nun wird die Datei geöffnet. Der Modus 'a' gibt an, dass die Datei zum Schreiben geöffnet wurde und die Daten hinten dran gehängt werden
        
$file fopen($datenbankdatei,"a");
        
// Absätze ermöglichen

        
$from = array("Ä""ä""Ö""ö""Ü""ü""ß");
        
$to = array("&Auml;""&auml;""&Ouml;""&ouml;""&Uuml;""&uuml;""&szlig;");
        
$eintrag str_replace($from$to$eintrag);
        
$eintrag nl2br($eintrag);

// mit fwrite werden nun die Daten, welche wir vorher zu einer Variable zusammengefasst haben hineingeschrieben
        
fwrite($file$eintrag);

// Datei schliessen
        
fclose($file);

// Ausgabe für den User:
        
echo '<h2>Danke '.$_POST['name'].' f&uuml;r Ihren Eintrag!</h2>Die Daten wurden erfolgreich aufgenommen.<br /><a href="'.$_SERVER["PHP_SELF"].'">Zur&uuml;ck zum G&auml;stebuch</a>';
   
// eMail wird verschickt:
        
@mail($mailempfaenger"Gästebucheintrag""Folgender Eintrag wurde hinterlassen:\r\n\r\nName: ".$_POST['name']."\r\nEMail: ".$_POST['email']."\r\nWebsite: ".$_POST['site']."\r\nText: ".$_POST['eintrag']."\r\nIP: ".$_SERVER["REMOTE_ADDR"]."\r\n".date('d.m.Y - H:i:s'), "From: ".$_POST['email']."\r\nX-Mailer: PHP/" phpversion());
        }
    }
} else {
// wenn das Formular nicht ausgefüllt wurde, es also nur einfach angezeigt werden soll, dann führe diesen Teil aus:

// Anzeige der Einträge aus dem Gästebuch:
    
echo '<h2>Mein G&auml;stebuch</h2>';

// Öffnen der Datei im Lese-Modus:
    
$file fopen($datenbankdatei'r');

// Solange wiederholen, bis die Datei vollständig ausgelesen wurde
    
while (!feof($file)) {
// Zeile für Zeile auslesen:
        
$zeile  fgets($file5000);
        
$daten  explode(" || "$zeile);
        
$datum  $daten[0];
        
$ip     $daten[1];
        
$name   $daten[2];
        
$email  $daten[3];
        
$site   $daten[4];
        
$eintrag $daten[5];

// Ausgabe auf den Bildschirm:

            
if($name != "" && $eintrag != "") {
                if (
$site == "http://" OR $site == "") {
                echo 
'<u>'.$name.' schrieb am '.$datum.' folgendes:</u><br />'.$eintrag.'<br /><br />';
                } else {
                  echo 
'<u><a href="'.$site.'">'.$name.'</a> schrieb am '.$datum.' folgendes:</u><br />'.$eintrag.'<br /><br />';
                }
            }
    }
    
fclose($file);

// Trennlinie zwischen alten Einträgen und dem Formular:
    
echo '<hr />';

// Formular für weitere Einträge:
    
echo '<h2>Neue Eintr&auml;ge:</h2>
    <p>Daten mit * m&uuml;ssen angegeben werden.</p>
<form method="post" action="'
.$_SERVER["PHP_SELF"].'">
<table>
<tr>
<td>*</td><td width="100"><p>Ihr Name:</p></td><td><input type="text" name="name"></td>
</tr>
<tr>
<td>*</td><td><p>Ihre EMail:</p></td><td><input type="text" name="email"></td>
</tr>
<tr>
<td></td><td><p>Ihre Website:</p></td><td><input type="text" name="site" value="http://" /></td>
</tr>
<tr>
<td>*</td><td><p>Ihr Eintrag:</p></td><td><textarea name="eintrag" cols="45" rows="7"></textarea></td>
</tr>
<tr>
<td>*</td><td>Sicherheitscode:</td><td>'
;
$publickey "6LePhgIAAAAAAOIHfNA2FO-pRjqi1roMCco1O45B";
echo 
'<script>
var RecaptchaOptions = {
   lang : \'de\',
   theme : \'clean\'
};
</script>'
;
$privatekey "6LePhgIAAAAAAOHiXY91Kc5tqdpBRqZew541fdKu";
echo 
recaptcha_get_html($publickey);
echo 
'</td>
</tr>
<tr>
<td></td><td><input type="submit" name="button" value="Absenden"></td><td></td>
</tr>
</table>
</form>'
;
}
?>
Ich hab sonst noch mal ein bisschen rumgespielt. Eine Alternative:

PHP-Code:
// Absätze ermöglichen

        
$from = array("Ä""ä""Ö""ö""Ü""ü""ß""\r\n");
        
$to = array("&Auml;""&auml;""&Ouml;""&ouml;""&Uuml;""&uuml;""&szlig;""<br />");
        
$eintrag str_replace($from$to$eintrag);
        
//$eintrag = nl2br($eintrag); 
Der Nachteil: Das erste mal funktioniert es ja, der wird der Absatz umgesetzt, nur werden die Zeilenumbrüche in der Textdatei halt nicht gemacht und dadurch kann man keine anderen Beiträge schreiben (bzw. sie werden nicht angezeigt). Aber immerhin klappt es ein mal.

Bin jetzt erstmal ein bisschen weg, kann also sein, dass ich nicht sofort antworte.

Bis bald,
Alex
__________________
Mobbing in der Schule
sgmalex ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.07.2008, 12:29 Nach oben    #22
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.374
Standard

und was spricht gegen diese Umsetzung?

Zitat:
Zitat von Jann Hendrik Beitrag anzeigen
PHP-Code:
// Absätze ermöglichen
        
$from = array("Ä""ä""Ö""ö""Ü""ü""ß");
        
$to = array("&Auml;""&auml;""&Ouml;""&ouml;""&Uuml;""&uuml;""&szlig;");
        
$eintrag str_replace($from$to$eintrag);
        
$eintrag nl2br($eintrag); 
an der Stelle, wo du die Ersetzung vornimmst.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.08.2008, 07:25 Nach oben    #23
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Sind die Zeiten nicht vorbei, wo man Umlaute noch extra behandeln muss?
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Optimale Weiterleitung auf eine 404er-Seite, Frage zu "Connection: close" Ben Tools, Server, Betriebssysteme 5 25.05.2007 23:24
Frage zu Tutorial "Download Script" bitkop PHP-Programmierung 14 02.04.2006 12:36
frage zu einem tutorial Steven Gerrard PHP-Programmierung 6 24.01.2006 13:51
[PHP] Gästebuch auf Textdatei basierend Jann Hendrik Tutorials 4 11.01.2006 07:50
Frage zum Gästebuch Tutorial bambi PHP-Programmierung 28 03.08.2005 18:10


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45