Loading...   Upload Image

Gästebuch mit AdministrationsfunktionForum » Tutorials » Help » Gästebuch mit Administrationsfunktion

Neues Thema verfassen Neues Thema

  • neomiiUser ist offline
    Beginner


    neomii

    Registriert: 03.02.2013
    Beitraege: 48

    03.02.2013 um 14:36 Uhr

    Hallo zusammen :-)

    Ich habe ein Problem beim Anwenden des Tutorials "Gästebuch mit Administrationsfunktion", zu dem ich auch kurz unter "Ask Alice" eine Frage hinterlassen habe. Natürlich habe ich erst nach dem Absenden gesehen, dass solches nicht dahingehört! Entschuldigung deswegen!

    Die Anpassung des Gästebuchs an das Design etc. hat wunderbar funktioniert. Die Ausführungen in phpMyAdmin sind auch in Ordnung, habe diese nochmals nachgeprüft. Meine Probleme sind nun:

    In der überarbeiteten Version:
    - Name des Eintragserstellers und der Text sind nicht zu sehen
    - Der Administrantionslink erscheint nicht, bzw. es lässt sich keine Verbindung zwischen "admin.php" und "gb.php" herstellen

    In der erstangeführten Version:
    - Name des Eintragserstellers und der Text sind nicht zu sehen (weder im öffentlichen, noch im administrativen Bereich)

    Ich habe bei mir festgestellt, dass eine einzige Datei (alle Funktionen etc. in einer Datei) besser funktionieren. Mit der "Include"-Funktion habe ich eigentlich immer Probleme, obwohl ich eigentlich nichts falsch mache (Zumindest nicht nach Anweisungen im Internet).
    "header.php" und "footer.php" in "gb.php" mit einzubinden ist absolut kein Problem. Ich habe dann schonmal versucht, die "admin.php" in "gb.php" einzubinden, mit :


    echo "Admin
    \n";

    und auch mit


    Nichts davon hat funktioniert. Ebenso schaffe ich es nicht, wenigstens bei dem Link das Passwort-Fenster zu öffnen. Versucht habe ich es mit
      


    Aber hier werden immer Fehler angezeigt. Auf die "<? php" und "?>" achte ich immer. Theoretisch kann da nichts falsch sein. Auch nicht im Vergleich zur "Erstausgabe des Scripts".

    Nach der Antwort unter "Ask me" habe ich nun nochmal alles neu gedownloaded und neu eingefügt und die DB überprüft.
    Bei mir sieht das Ganze dann so aus:
    niora.pf-control.de/gb.php

    Ich habe auch 2 Test-Beiträge gemacht. Hier kann man sehen, welches Problem ich beschreibe.

    Was kann man da jetzt machen?

    Freue mich über schnelle Antwort :-)

    Liebe Grüße
    Naomi



  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1059

    03.02.2013 um 15:30 Uhr

    Das Gaestebuch funktioniert auf deiner Testseite,
    ich konnte problemlos einen Eintrag taetigen, dieser wird auch vollstaendig angezeigt o.0



    ... { signatur } ...
  • neomiiUser ist offline
    Beginner


    neomii

    Registriert: 03.02.2013
    Beitraege: 48

    03.02.2013 um 15:50 Uhr

    Ich kann deinen Eintrag auch problemlos sehen, aber meine weiterhin nicht. Siehst du denn den Aministrationsbereich? (Den Link + Passwortaufforderung?)

    Welchen Browser benutzt du?



  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1059

    03.02.2013 um 16:05 Uhr

    Uhm, hast du die gb.php - die testseite - so belassen, wie du sie herunter geladen hattest, oder hast du da jetzt schon was umgebaut dran?

    Denn wenn man sich den Quellcode anschaut, wird eine Fehlermeldung ausgegeben.

    Fatal error: Cannot redeclare smileys() (previously declared in /var/customers/webs/niora/gb.php:29) in /var/customers/webs/niora/footer.php on line 39
    



    ... { signatur } ...
  • neomiiUser ist offline
    Beginner


    neomii

    Registriert: 03.02.2013
    Beitraege: 48

    03.02.2013 um 16:15 Uhr

    Geändert habe ich gerade nur "header.php" und "footer.php", um das ganze ans Design anzupassen. (gb.php ist also noch im Original! - abgesehen von den DB Daten)
    Bekommen habe ich bisher keinen Fatal Error.

    Wie bekomme ich denn jetzt am Besten den Link "Admin" unter das Ganze?



  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1059

    03.02.2013 um 16:25 Uhr

    Den Error hast du ebenfalls, dazu musst du dir allerdings den Quelltext schauen, damit du den siehst!

    Postet doch mal bitte deine Aenderungen,
    denn bei den Original Dateien tritt dieser Fehler nicht auf, so dass du den demnach selbst verursacht haben musst,
    mit deinen Anpassungen.

    Da ich nicht weiss, was genau du wo wie geaendert hast, kann ich dir schlecht helfen ;)



    ... { signatur } ...
  • neomiiUser ist offline
    Beginner


    neomii

    Registriert: 03.02.2013
    Beitraege: 48

    03.02.2013 um 16:35 Uhr

    Also auch im Quellcode sehe ich keinen Error..

    Hier die Scripte: (Passwort für die DB un den Adminbereich rausgenommen)


    gb.php

    ",$msg); 
    	$msg = str_replace(":)","",$msg); 
    	$msg = str_replace(";)","",$msg); 
    	$msg = str_replace(":(","",$msg); 
    	$msg = str_replace("*grr*","",$msg); 
    	$msg = str_replace("0.o","",$msg); 
    	$msg = str_replace("*_*","",$msg); 
    	$msg = str_replace("._.","",$msg); 
    	$msg = str_replace("-.-","",$msg); 
    	$msg = str_replace(":D","",$msg); 
    	
    	return $msg;
    }
    
    echo "Ins Gästebuch eintragen
    \n"; # Wenn der Link zum Eintragen ins GB geklickt wird, wird das Formular zum eintragen angezeigt if($action == "eintragen") { if (isset($_POST['los'])){ # wenn auf Abschicken geklickt wurde #--- Eingaben prüfen und ersetzen ---# $name = mysql_real_escape_string($_POST['name']); $email = mysql_real_escape_string($_POST['email']); $hp = mysql_real_escape_string($_POST['hp']); $msg = mysql_real_escape_string($_POST['msg']); $spam = mysql_real_escape_string($_POST['spam']); # Wenn Feld Name und Nachricht nicht leer sind, und Spamfrage eichtig beantwortet wurde, dann speichern... if ($name != "" && $msg != "" && $spam == "7") { # Wenn Feld Homepage nicht leer if ($hp != ""){ # Hier wird geprüft ob die homepage mit oder ohne http:// eingegeben wurde. if (strtolower(substr($hp, 0, 7)) == "http://"){ # Wenn ja, Feld so wie ist abspeichern $hp = "$hp"; }else { # Wenn nicht, soll er das "http://" manuell hinzufügen $hp = "http://$hp"; } } $ip = $_SERVER['REMOTE_ADDR']; # IP-Adresse ermitteln $msg = trim($msg); # --- Und hier speichern wir in die Datenbank --- # $eintragen = mysql_query ("INSERT INTO gb (id, name, email, hp, msg, ip, date, time) VALUES ('', '$name', '$email', '$hp', '$msg', '$ip', '$datum', '$zeit')"); if($eintragen){ # Wenn oben bei mailinfo ja gewählt wurde, wird nach dem speichern eine email geschickt! if ($mailinfo == "ja"){ # Betreffzeile für die EMail $betreff = "GB Eintrag"; # Name und Nachricht des Eintrages für die Mail $body = "Es gibt einen neuen Eintrag im GB:\nName: $name Nachricht: $msg"; # Hier wird die Mail versendet und zusammengesetzt mail("$webmaster","$betreff","$body\n"); } echo ""; // Weiterleitung }else{ echo 'Fehler beim Eintragen...';} }else{ # wenn nicht alle Pflichtfelder ausgefuellt wurden echo '

    Bitte alle mit * gekennzeichneten Felder ausfüllen!

    '; } } // close submit ?>

    *
    *

    Spamschutzfrage *
    Die Summe aus 3+4 =

    mit * gekennzeichnete Felder müssen ausgefüllt werden

    Anzahl aller Eintraege feststellen $total = mysql_num_rows($abfrage); // Anzahl aller Eintraege feststellen $seiten = ceil($total/$datensaetze_pro_seite); // Berechnet die Seitenanzahl insgesamt if(empty($_GET['seite'])){ // korrigieren der aktuellen Seite $go = 1; // Sofern $go nicht uebergeben wurde }elseif($_GET['seite'] <= 0 || $_GET['seite'] > $seiten){ $go = 1; // Variable definieren }else{ // Wenn Obiges nicht zutraf $go = mysql_real_escape_string($_GET['seite']); // Variable definieren } $links = array(); // Linkkette bilden // Seite die vor der aktuellen Seite kommt definieren if(($go - $p) < 1){ $davor = $go - 1; }else { $davor = $p; } // Seite die nach der aktuellen Seite kommt definieren if(($go + $p) > $seiten){ $danach = $seiten - $go; }else{ $danach = $p; } $off = ($go - $davor); // Variable definieren if ($go- $davor > 1){ // Link definieren => Zur Erste Seite springen $first = 1; $links[] = "« Erste ...\n"; } if($go != 1){ // Link definieren => eine Seite zurueck blaettern $prev = $go-1; $links[] = "«\n"; } for($i = $off; $i <= ($go + $danach); $i++){ // einzelne Seitenlinks erzeugen if ($i != $go){ // Link definieren $links[] = "$i\n"; }elseif($i == $seiten) { // aktuelle Seite, ein Link ist nicht erforderlich $links[] = "$i\n"; }elseif($i == $go){ // aktuelle Seite, ein Link ist nicht erforderlich $links[] = "$i\n"; } // close if $i } if($go != $seiten){ // Link definieren => eine Seite weiter blaettern $next = $go+1; $links[] = "»\n"; } if($seiten - $go - $p > 0 ){ // Link definieren => Zur letzen Seite springen $last = $seiten; $links[] = "... Letzte »\n"; } $start = ($go-1) * $datensaetze_pro_seite; // Berechne den Startwert fuer die DB $link_string = implode(" ", $links); // Zusammenfuegen der einzelnen Links zu einem String // Anzahl aller Eintraege ausgeben echo "

    Es sind $total Einträge im Gästebuch vorhanden

    "; // Daten aus DB holen $result = mysql_query("SELECT id, name, hp, msg, date, time, kommentar FROM gb ORDER BY id DESC LIMIT $start,$datensaetze_pro_seite"); while($row = mysql_fetch_object($result)) { # Hier wird schadhafter Code und böse Zeichen ausgemustert $text = htmlspecialchars($row->msg, ENT_QUOTES); // HTML Zeichen umwandeln $text = wordwrap($text, 40, ' ', 1); // zu lange Woerter teilen $text = stripslashes(nl2br($text)); // Zeilenumbrueche umwandeln #---------- Eintraege ausgeben -------------------------# echo "
    \n"; echo "
    \n"; if(!empty($row->hp)){ // sofern WEbsite angegeben echo "hp)."\"> ".htmlspecialchars($row->name)." "; }else{ echo htmlspecialchars($row->name); } echo " schrieb am ".$row->date." um ".$row->time." Uhr\n"; echo "
    \n"; echo "

    ".smileys($text)."

    \n"; if($row->kommentar != "") { // Admin Kommentar ausgeben echo"
    Kommentar:
    \n ".smileys(htmlspecialchars(stripslashes($row->kommentar)))."\n
    \n"; } echo "
    \n
    \n"; } #--------------- ENDE AUSGABE ---------------# // -------------------------------------- Seitennavigation ausgeben ---------------------------- echo "
    \n"; echo "Seite $go von $seiten\n"; echo $link_string; // Ausgabe der Seitennavigation echo "
    \n"; // -------------------------------------- Seitennavigation ende -------------------------------- # Datenbankverbindung schließen. mysql_close(); include('footer.php'); // Footer einbinden ?>


    admin.php

    ",$msg); 
    	$msg = str_replace(":)","",$msg); 
    	$msg = str_replace(";)","",$msg); 
    	$msg = str_replace(":(","",$msg); 
    	$msg = str_replace("*grr*","",$msg); 
    	$msg = str_replace("0.o","",$msg); 
    	$msg = str_replace("*_*","",$msg); 
    	$msg = str_replace("._.","",$msg); 
    	$msg = str_replace("-.-","",$msg); 
    	$msg = str_replace(":D","",$msg); 
    	
    	return $msg;
    }
    
    // ------------------------------ Admin-Bereich ------------------------------------------ //
    
    # Wenn auf den Logout Link gecklickt wird, wird hier die Session gelöscht
    if ($action == "logout"){
        session_destroy(); 
        header("refresh:0;url=$pfad"); 
    } 
    
    $rang = $_SESSION['rang'];
    $pass = strip_tags($_POST['password']);
    
    # Wenn das Admin-Passwort falsch eingegeben wurde erscheint eine Fehlermeldung
    if (isset($_POST['submit']) && $pass != $passwort){
    echo "Falsches Passwort!";
    }
    
    # Wenn das Passwort richtig war, wird der Admin-Rang auf 1 gesetzt und die Session gestartet
    else if (isset($_POST['submit']) && $pass == $passwort){ 
        $_SESSION['rang'] = "1"; 
        header("refresh:0;url=$pfad"); 
    }
     
    include('header.php');
    
    if($rang !=1){ // login Formular anzeigen, wenn nicht eingeloggt
    ?>   
    

    Passwort:
    Eintrag erfolgreich geloescht ...

    "; } if($action == "kommentieren") { if(isset($_POST['speichern'])){ $kommentar = mysql_real_escape_string($_POST['msg']); # Und hier wird dann der Kommentar zu dem GB Eintrag in der DB gespeichert. $sql= "UPDATE gb SET kommentar = '$kommentar' WHERE id = '$id'"; mysql_query($sql) or die ("Das Schreiben ist gescheitert!"); echo ""; // Weiterleitung } $abfrage = mysql_query("SELECT msg FROM gb WHERE id='$id'"); $row = mysql_fetch_object($abfrage); echo "

    Eintrag Nr. ".$id." kommentieren

    "; echo "

    ".stripslashes(nl2br(smileys($row->msg)))."

    "; ?>


    Anzahl aller Eintraege feststellen $total = mysql_num_rows($abfrage); // Anzahl aller Eintraege feststellen $seiten = ceil($total/$datensaetze_pro_seite); // Berechnet die Seitenanzahl insgesamt if(empty($_GET['seite'])){ // korrigieren der aktuellen Seite $go = 1; // Sofern $go nicht uebergeben wurde }elseif($_GET['seite'] <= 0 || $_GET['seite'] > $seiten){ $go = 1; // Variable definieren }else{ // Wenn Obiges nicht zutraf $go = mysql_real_escape_string($_GET['seite']); // Variable definieren } $links = array(); // Linkkette bilden // Seite die vor der aktuellen Seite kommt definieren if(($go - $p) < 1){ $davor = $go - 1; }else { $davor = $p; } // Seite die nach der aktuellen Seite kommt definieren if(($go + $p) > $seiten){ $danach = $seiten - $go; }else{ $danach = $p; } $off = ($go - $davor); // Variable definieren if ($go- $davor > 1){ // Link definieren => Zur Erste Seite springen $first = 1; $links[] = "« Erste ...\n"; } if($go != 1){ // Link definieren => eine Seite zurueck blaettern $prev = $go-1; $links[] = "«\n"; } for($i = $off; $i <= ($go + $danach); $i++){ // einzelne Seitenlinks erzeugen if ($i != $go){ // Link definieren $links[] = "$i\n"; }elseif($i == $seiten) { // aktuelle Seite, ein Link ist nicht erforderlich $links[] = "$i\n"; }elseif($i == $go){ // aktuelle Seite, ein Link ist nicht erforderlich $links[] = "$i\n"; } // close if $i } if($go != $seiten){ // Link definieren => eine Seite weiter blaettern $next = $go+1; $links[] = "»\n"; } if($seiten - $go - $p > 0 ){ // Link definieren => Zur letzen Seite springen $last = $seiten; $links[] = "... Letzte »\n"; } $start = ($go-1) * $datensaetze_pro_seite; // Berechne den Startwert fuer die DB $link_string = implode(" ", $links); // Zusammenfuegen der einzelnen Links zu einem String // Anzahl aller Eintraege ausgeben echo "

    Es sind $total Einträge im Gästebuch vorhanden

    "; echo "

    Logout

    "; // Logout ausgeben // Daten aus DB holen $result = mysql_query("SELECT id, ip, name, hp, msg, date, time, kommentar FROM gb ORDER BY id DESC LIMIT $start,$datensaetze_pro_seite"); while($row = mysql_fetch_object($result)){ # Hier wird schadhafter Code und böse Zeichen ausgemustert $text = htmlspecialchars($row->msg, ENT_QUOTES); // HTML Zeichen umwandeln $text = wordwrap($text, 40, ' ', 1); // zu lange Woerter teilen $text = stripslashes(nl2br($text)); // Zeilenumbrueche umwandeln #---------- Eintraege ausgeben -------------------------# echo "
    \n"; echo "
    \n"; if(!empty($row->hp)){ // sofern WEbsite angegeben echo "hp)."\"> ".htmlspecialchars($row->name)." "; }else{ echo htmlspecialchars($row->name); } echo " schrieb am ".$row->date." um ".$row->time." Uhr\n"; echo "
    \n"; echo "

    ".smileys($text)."

    \n"; if($row->kommentar != "") { // Admin Kommentar ausgeben echo"
    Kommentar:
    \n ".smileys(htmlspecialchars(stripslashes($row->kommentar)))."\n
    \n"; } echo "
    IP: ".$row->ip." | id."\">löschen | id."\">kommentieren"; echo "
    \n
    \n"; } #--------------- ENDE AUSGABE ---------------# // -------------------------------------- Seitennavigation ausgeben ---------------------------- echo "
    \n"; echo "Seite $go von $seiten\n"; echo $link_string; // Ausgabe der Seitennavigation echo "
    \n"; // -------------------------------------- Seitennavigation ende -------------------------------- } // close kommentieren } // close login # Datenbankverbindung schließen. mysql_close(); include('footer.php'); // Footer einbinden ?>


    header.php

    
    
    
    
    Naomi Joy-Farrell
    
      
    
    
    
    
    

    Gästebuch



    footer.php



Vielleicht findest du das Problem :/



Antworten  Antworten Zitat  Zitat
  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1059

    03.02.2013 um 16:51 Uhr

    schmunzel, du hast das Ganze ja jetzt geaendert, als ich vorhin meinen Testeintrag verfasst hatte,
    sah das Ganze noch etwas anders aus ...

    Der Fehler ist weg, stimmt ...

    Die Daten, wie Name usw. deiner vorherigen GB-Eintraege, welche nicht angezeigt werden,
    sind auch wirklich in der DB hinterlegt, nicht dass da nur leere Felder sind und da dann was beim Eintragen schon nicht geklappt hatte?

    Wo soll denn der Admin-Link hin?



    ... { signatur } ...
  • neomiiUser ist offline
    Beginner


    neomii

    Registriert: 03.02.2013
    Beitraege: 48

    03.02.2013 um 16:56 Uhr

    Ja, ich wechsle immer öfters die Dateien aus, weil ich manche Dinge einfach zuerst ausprobieren muss und dann kommt es oft vor, dass jemand genau dann draufschaut, wenn die Dateien entweder noch nicht wieder auf dem FTP gelandet sind oder ein Test nicht funktioniert hat :)

    Moment mal ... beim Überprüfen der DB ist mir was aufgefallen: Kann es sein, dass Beiträge nicht richtig angezeigt werden, wenn man eine ungültige E-Mail-Adresse angibt? Da das ja ein Pflichtfeld ist ... *grübel*
    Dann wäre das dasselbe Problem wie bei der Registrierung, dass ich Dummerchen mich vertippt habe *.*

    Edit: Den Admin-Link hätte ich gern, wie in den Screenshots am Ende der Beiträge :)



    Der Beitrag wurde insgesamt 1 mal editiert, zuletzt 03.02.2013 um 16:58 Uhr ...
  • AliceUser ist offline
    Admin


    Alice

    Registriert: 14.12.2006
    Beitraege: 1059

    03.02.2013 um 17:06 Uhr

    Wie sieht denn der Inhalt der einzelnen Felder der von dir getaetigen GB-Eintrage in der DB aus?

    Wenn keine gueltige Email adresse angegeben wurde, dann sollte das eigentlich keine Rolle spielen,
    da steht zwar dran, dass die Emailadresse ein Pflichtfeld waere, ueberprueft wird allerdings nur,
    ob ein Name und die Nachricht angegeben wurde und die Rechenaufgabe korrekt geloest wurde.

    Wenn du willst, dass die EmailAdresse auch wirklich ein Pflichtfeld ist, musst du folgendes in der gb.php noch aendern:

    if ($name != "" && $msg != "" && $spam == "7") { 
    


    ersetzten durch ...

    if ($name != "" && $msg != "" && $email != "" && $spam == "7") { 
    



    ... { signatur } ...

  • [ 1 ] 2 » ... Letzte » Seite 1 von 2


    Neuste Tutorials

    Neuste Forenthemen

    Neuste Kommentare

    Affiliates:   Blue-Graphics  •   The Seduction  •   Pat DG  •   Design Grafixx  •   Gallery Yuri  •   Chibi Graphics  •   Colorful Gfx  • Show all ...
    designenlassen.de - Der Design-Marktplatz für Webdesign, Logo-Design, Flyerdesign u.v.m.        ALL-INKL.COM - Webhosting Server Hosting Domain Provider