Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Kommentarfunktion“

Ammersee

Laborant

Guten Tag zusammen,

bin gerade am basteln meiner eigenen Seite habe schon 4 andere auf die Beine gestellt, aber da hatte ich nie das Problem, und zwar will ich mit php und eine sql datenbank eine Kommentarfunktion basteln. Mir wurde schon geraten ein Blogsystem wie z.B. Wordpress zu benutzen, aber da ich alles selber machen will benötige ich eure Hilfe es kann ja eigentlich nicht so schwer sein. Die Benutzer die den Artikel von mir lesen sollen die Möglichkeit haben einen kurzes Kommentar
dazu abzugeben, evtl. noch mit einem Captcha Code das ganze bestätigen sonst bekomm ich wieder soviel spam. Es ist doch so das ich ein Formular benötige das den Namen und das Kommentar und andres in die Datenbank schreibt und dann benötige ich noch den php code der das ganze wieder aus der Datenbank holt und auf meiner Seite ausgibt. Wisst ihr zufällig ein Tutorial was mir da weiter hilft oder es wäre schön wenn einer von euch Zeit hat und per skype mir ein bisserl hilft oder halt direkt hier.

Liebe Grüße vom Ammersee
 

thrillhouse

Nicht mehr ganz neu hier

AW: Kommentarfunktion

Hi,

keine Ahnung wie fit du in Sachen php und (my)sql bist.
Falls du da Aufholbedarf haben solltest, hilft dir dieses Tutorial sicher fürs Verständnis:

Sag mal, wie es bei dir mit Programmierkenntnissen aussieht.

Grüße
 

Ammersee

Laborant

AW: Kommentarfunktion

Grüß dich,
danke für die schnelle Antwort,
also html css bildbearbeitung mysql bin ich fit.
php kann ich leider nur die ganz groben dinger aber den Link werd ich mir gleich mal zu Gemühte führen danke.

Wenn ich nicht weiterkomm werd ich mich nocheinmal melden.
Warum auf die Idee mit dem Gästebuch nicht gekommen bin ist ja genau des selbe nur ein bisserl größer

Nette Grüße Ammersee
 

Ammersee

Laborant

AW: Kommentarfunktion

Guten Tach zusammen bin jetzt gerade wieder daran des mit der kommentarfunktion zu probieren nur funktioniert das so nicht wie ich es mach
Was hab ich falsch gemacht Hier ist meine code für den Eintrag
eintragen.php

<html>
<head>
<title>Eintragen</title>
</head>

<body bgcolor="#FFFFFF">
<?php
if ($action == "add"){

if ($name == "" || $mail == "" || $text == ""){
echo "<b>Du hast nicht alle Felder ausgef&uuml;llt !</b><br>";
echo "Klicke auf den Backbutton deines Browsers";
}
else{

if ($www == ""){
$eintrag = "<a href=\"mailto:$mail\">$name</a><br>$text";
}
else{
$eintrag = "<a href=\"mailto:$mail\">$name</a>

<br><a href=\"$www\">$www</a>$text<hr><br><br>";
}

$datei = fopen("gaestebuch.txt","w+");
fputs($datei,$eintrag);
fclose($datei);
echo "Danke <i>$name</i> f&uuml;r deinen Eintrag";

}

}
else{
?>
<table>
<tr><td><b>Kommentar abgeben</b><td><td></td></tr>
<form action="eintragen.php?action=add" method="get">
<tr><td>Dein Name: </td><td><input type="text" name="name" size="24"></td></tr><br>
<tr><td>E-Mail: </td><td><input type="text" name="mail" size="24"></td></tr><br>
<tr><td>Homepage: </td><td><input type="text" name="www" size="24"></td></tr><br>
<br>
<tr><td>Dein Kommentar:<br></td><td></td></tr>
<tr><td></td><td><textarea name="text" cols="35" rows="5"></textarea></td></tr><br>
<tr><td></td><td align="right"><input value="add" name="abschicken" type="submit"></td></tr>
</table>
</form>
<?php
}
?>
<br /><div style="z-index:3" class="smallfont" align="center">Content Relevant URLs by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.0.0 RC8</div></body>

</html>


Und hiermit will ich des ganze dann ausgeben zeigen.php


<html>
<head>
<title>Eintragen</title>
</head>

<body bgcolor="#FFFFFF">

<font face="Verdana" size="1">
<b>Mein G&auml;stebuch</b><br>
<a href="eintragen.php">Hier</a> kannst du dich eintragen<br>
<br>

<?php
include("gaestebuch.txt");
?>

</font>
<br /><div style="z-index:3" class="smallfont" align="center">Content Relevant URLs by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.0.0 RC8</div></body>

</html>


Bitte helft mir

Mit freundlichen Grüßen andi
 

dlogic

Allrounder

AW: Kommentarfunktion

Also in die Datenbank schreibst du damit leider nichts... sondern eher in eine Textdatei auf dem Server. Wenn du wirklich wie oben die Daten in eine MySql DB schreiben möchtest, dann solltes du die eingegebenen Daten nicht per GET sondern per POST übertragen und benenne dann die Variablen bitte richtig...

z.B. mit $_Request['NameVomInputField']; und die
Abfrage ob der Senden Button gedrückt wurde...

if (isset($_Request['abschicken'];)) {
if (empty($_Request['name'] ....... }

Wenn du google ein wenig bemühst, wirst du bestimmt eine fertige Lösung finden.... oder du beschreibst welche Probleme du genau hast, dann helfe ich dir auch gerne weiter.
 

michas

Nicht mehr ganz neu hier

AW: Kommentarfunktion

Woran scheitert es denn?

Steht denn was drinn in deiner "gaestebuch.txt"? oder ist die leer?

Vielleicht fehlen die Rechte auf das Verzeichniss?
 

gp812

Newbster

AW: Kommentarfunktion

PHP:
if ($action == "add"){
Liefert immer false, da die Variable $action gar nicht existiert. Eigentlich muss von php an der stelle eine warnung kommen. Aber es gibt ein $_GET['action']. Das gleiche gilt für den restlichen variablen.
Und wie schon oben gesagt, wenn du das ganze mit DB machen willst, nimm lieber method='post'.
Und php muss recht haben in die datei gaestebuch.txt zu schreiben.
 

Duddle

Posting-Frequenz: 14µHz

AW: Kommentarfunktion

Naja, wenn register_globals aktiviert ist, klappt das schon. Es ist aber natürlich sehr, sehr unfein (und sollte sowieso bei Servern deaktiviert sein).

Duddle
 

blackout

Schaf im Wolfspelz

AW: Kommentarfunktion

Kurz zur Info: Wenn register_globals an ist, kann man sich z.B. über den GET-Header ganz einfach eigene Variablen definieren und das Script wunderbar nach seiner Pfeife tanzen lassen.

Beispiel: In einer Datei die per include() eingebunden wird, die nichts anderes tut als Daten in die Datenbank zu schreiben, wird per "if($user_got_permission)" abgefragt, ob das für den aktuellen Login überhaupt erlaubt ist. Ohe register_global kann man da nichts machen, ist die Option an ruft man die Datei einfach mit angehängtem "&user_got_permission=1" auf und hat Adminrechte.
PHP:
<?php // bar.php
if(!$user_got_permission) {
	die('Error: You mustn\'t do that.');
} else {
	$db->writeData($_GET['foo']);
	die($_GET['foo'].' written.');
}
?>
Code:
Ausgabe:

bar.php?foo=WWAPD
=> Error

bar.php?foo=WWAPD&user_got_permission=1
=> WWAPD written


Ein wirksamer Schutz gegen das unerlaubte Ausführen von Unterscripts ist übrigens die Definition einer Konstanten am Anfang des Scripts; in jeder Unterdatei wird dann auf diese Konstante geprüft und bei Nichtvorhandensein abgebrochen.
/* main.php */ define('INC', null);
/* included_file.php */ defined('INC') OR die('Stop trying to trick my scripts');
 
Zuletzt bearbeitet:

dlogic

Allrounder

AW: Kommentarfunktion

Die Länge einer URL ist begrenzt und somit auch die per GET übertragenen Parameter. Jedoch kann man mit einer max. Länge von 2000 Zeichen als GET Parameter arbeiten. Für eine Kommentarfunktion könnte das soweit ausreichen.

Ich würde jedoch aus Sicherheitsgründen, welche hier nicht erwähnt werden sollen, auf GET Übertragung und register_globals = on verzichten. Ob diese aud "on" sind, kannst du über eine auf dem Server liegende PHP Datei mit folgendem Code rausfinden:

PHP:
<? phpinfo (); ?> //das ist alles ;o)

Ebenfalls findest du dort weitere Angaben zur PHP und MySQL Version sowie installierte Erweiterungen.

Ein immer wieder guter Link für kleine PHP Funktionen ist:
 

Ammersee

Laborant

AW: Kommentarfunktion

Guten Abend

vielen Dank für diese vielen Antworten, weiß ja dass dieses Thema auch schon oft hier behandelt wurde und man damit ziemlich nerven kann, aber ich muss jetzt trotzdem weiter fragen, habe mich jetzt zur sql angebundenen Variante begeben, aber wie das es klar war bekomm ich das auch nicht hin. Obwohl ich
finde das alles ganz guad auschaut seht selbst ich habe zwei dateien angelegt
einmal die comment.php
PHP:
<html>
  <head>
    <title>Kommentare</title>
    <meta name="author" content="" />
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
    <script type="text/javascript" src="js/jquery.js"></script>
<script>
  $(document).ready(function(){
    
    $("#showr").click(function () {
      $(".comments:eq(0)").show("fast", function () {
        // use callee so don't have to name the function
        $(this).next().show("fast", arguments.callee); 
      });
    });
    $("#hidr").click(function () {
      $(".comments").hide(2000);
    });

  });
  </script>
  <style>
  .comments { background:#fff; margin:3px; width:600px; 
        display:none; float:left;}
table {
background-color:#fff;
color:#fff;
border:1px solid #353535;
}
body {
background-color:#fff;
}
  </style>
  </head>
  <body>
  <?php
$mysql = mysql_connect('localhost', 'web64', 'verrat ich nicht') or die(mysql_error());
mysql_select_db('usr_web64_6', $mysql) or die(mysql_error());

?>
    <button id="showr">hier Kommentar posten</button>
    <div class="comments">
    <form action="eintragen.php" method="post" name="eintragen">
      <table border="0" cellpadding="5" cellspacing="0" bgcolor="#000">
        <tr>
          <td border="0" bgcolor="#fff">Dein Name:</td>
          <td bgcolor="#fff"><input type="text" size="33" name="name" style="font-family: Verdana; font-size: 11px;" /></td>
        </tr>
        <tr>
          <td bgcolor="#fff">Deine E-Mail:</td>
          <td bgcolor="#fff"><input type="text" size="33" name="email" style="font-family: Verdana; font-size: 11px;" /></td>
        </tr>
        <tr>
          <td bgcolor="#fff" valign="top">Dein Kommentar:&nbsp;&nbsp;&nbsp;</td>
          <td bgcolor="#fff"><textarea name="text" rows="1" cols="150" style="font-family: Verdana; font-size: 11px;"></textarea></td>
        </tr>
        <tr>
          <td colspan="2" bgcolor="#fff" align="center"><input type="submit" value="Komentar abgeben!" style="font-family: Verdana; font-size: 11px;" /></td>
        </tr>
      </table>
    </form>

<?php
$mysql = mysql_connect('localhost', 'web64', 'verrat ich nicht') or die(mysql_error());
mysql_select_db('usr_web64_6', $mysql) or die(mysql_error());

$sql = "SELECT * FROM `comment` ORDER BY zeit DESC";
$query = mysql_query($sql, $mysql);

$count = 0;
while ($eintrag = mysql_fetch_array($query, $mysql)){
  $count++;
  echo '<table border="0" cellpadding="3" cellspacing="1">'."\n";
  echo '<tr><td colspan="2" bgcolor="#AAA" align="center"><b>Eintrag Nr.'.$count.' von <a href="mailto:'.$row['email'].'">'.$row['name'].'</a></b></td></tr>'."\n";
  echo '<tr><td>'.$row['text'].'</td></tr>';
  echo '</table><br /><br />'."\n\n";
}
?>
    <br /><br />
    <button id="hidr">verkleinern</button>
    </div>
  </body>
</html>
also er sagt mir ja das bei der 2 php anweisung also bei der Auswertung etwas nicht stimmt, hab jetzt auch schon mal ein Feld count in der datenbank angelegt aber mhm nichts
also weiter dann hab ich noch die datei eintragen.php die so aussieht
PHP:
<html>
<head>
<title>eintragen.php</title>
</head>
<body>
<?php
$mysql = mysql_connect('localhost', 'web64', 'verrat ich nicht') or die(mysql_error());
mysql_select_db('usr_web64_6', $mysql) or die(mysql_error());

if(!$_POST['name']){
  die('Du musst noch deinen Namen eingeben!');
}

if(!$_POST['email']){
  die('Deine Email-adresse fehlt!');
}

if(!$_POST['text']){
  die('Du musst noch einen Kommentar zur Seite abgeben!');
}

$_POST['name'] = htmlspecialchars($_POST['name']);
$_POST['email'] = htmlspecialchars($_POST['email']);
$_POST['email'] = htmlspecialchars($_POST['email']);

$sql = "INSERT INTO `comment` (`id`, `name`, `email`, `text`, `ip`) VALUES ('', '".$_POST['name']."', '".$_POST['email']."', '".$_POST['text']."', '".$_SERVER['REMOTE_ADDR']."')";
mysql_query($sql, $mysql);

echo 'Danke für deinen Eintrag!<br /><a href="comment.php">Zu den Komentaren</a>';
?>
</body>
</html>
achja bevor ich es vergesse hier könnt Ihr euch die Fehlermeldung anschauen und die comment funktion
einfach auf hier kommentar posten :)rolleyes:hab schon jquery eingebaut obwohls nicht funktioniert:rolleyes:)
Bitte helft mir doch ich hab mir echt viel mühe gegeben und auch echt viel gelernt in den letzten Tagen nochmal danke an alle aber ich komm nicht zum Ende.

Liebe Grüße Andi
 

Ammersee

Laborant

AW: Kommentarfunktion

Haha

danke aber das kann ich heute nimmer nach 10 Std arbeiten, ein bisschen ungenau und ein bisserl viel naja morgen dann wieder

Guad Nacht
 

dlogic

Allrounder

AW: Kommentarfunktion

@gp812 das auch ;o)

jedenfalls hab ich mir mal die mühe gemacht dir die kommentarfunktion "fast" fertig zu schreiben... jedenfalls funktioniert es. Kommentare sind im quellcode vorhanden und wenn möglich versuche die einzelnen befehle nach zu vollziehen... ansonsten biste nur am nachfragen und verlierst eine menge zeit...

PHP:
<html>
  <head>
    <title>Kommentare</title>
    <meta name="author" content="" />
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
    <script type="text/javascript" src="js/jquery.js"></script>
<script>
  $(document).ready(function(){
    
    $("#showr").click(function () {
      $(".comments:eq(0)").show("fast", function () {
        // use callee so don't have to name the function
        $(this).next().show("fast", arguments.callee); 
      });
    });
    $("#hidr").click(function () {
      $(".comments").hide(2000);
    });

  });
  </script>
  
  <style>
  /* Die Stylesheet kannst du in einer CSS Datei auslagern....  */
  .comments { background:#fff; margin:3px; width:600px; display:none; float:left;}
	table { background-color:#fff; color:#fff; border:1px solid #353535; }
	body { background-color:#fff; }
	/* damit du nur einmal die styles für die eingabefelder festlegen musst */
	input { font-family: Verdana; font-size: 11px; }
	/* da du der tabelle color:#fff gegeben hast, kann der text nicht geshen werden da dieser weiß ist... nun ist er damit schwarz */
	.text { color:#000; }
  </style>
  
  </head>
  <body>
  
<?php
$mysql = mysql_connect('localhost', 'User', 'Password') or die(mysql_error());
mysql_select_db('YourTable', $mysql) or die(mysql_error());

?>
    <button id="showr">hier Kommentar posten</button>
    <div class="comments">
    <form action="eintragen.php" method="post" name="eintragen">
      <table border="0" cellpadding="5" cellspacing="0" bgcolor="#000">
        <tr>
          <td border="0" bgcolor="#fff">Dein Name:</td>
          <td bgcolor="#fff"><input type="text" size="33" name="name"></td>
        </tr>
        <tr>
          <td bgcolor="#fff">Deine E-Mail:</td>
          <td bgcolor="#fff"><input type="text" size="33" name="email"></td>
        </tr>
        <tr>
          <td bgcolor="#fff" valign="top">Dein Kommentar:&nbsp;&nbsp;&nbsp;</td>
          <td bgcolor="#fff"><textarea name="text" rows="1" cols="50"></textarea></td>
        </tr>
        <tr>
          <td colspan="2" bgcolor="#fff" align="center"><input type="submit" value="Komentar abgeben!"></td>
        </tr>
      </table>
    </form>

<?php

$sql = "SELECT * FROM `comment` ORDER BY id DESC"; //id musst du dann gegen zeit ersetzen
$query = mysql_query($sql, $mysql);

$count = 0;
for($i=0; $i<mysql_num_rows($query); $i++) {
	$result=mysql_fetch_object($query); //fetch_object ist im moment für dich einfacher nachzuvollziehen als fetch_array
  	$count++;
  	echo '<table border="0" cellpadding="3" cellspacing="1">'."\n";
  	echo '<tr><td colspan="2" bgcolor="#AAA" align="center"><b>Eintrag Nr.'.$count.' von <a href="mailto:'.$result->email.'">'.$result->name.'</a></b></td></tr>'."\n";
  	echo '<tr><td class="text">'.$result->text.'</td></tr>';
  	echo '</table><br /><br>'."\n\n";
}

?>
    <br><br>
    <button id="hidr">verkleinern</button>
    </div>
  </body>
</html>

und nun der zweite Teil:
PHP:
<html>
<head>
<title>eintragen.php</title>
</head>
<body>
<?php
$mysql = mysql_connect('localhost', 'User', 'Password') or die(mysql_error());
mysql_select_db('YourTable', $mysql) or die(mysql_error());

if(!$_POST['name']){
  die('Du musst noch deinen Namen eingeben!');
}

if(!$_POST['email']){
  die('Deine Email-adresse fehlt!');
}

if(!$_POST['text']){
  die('Du musst noch einen Kommentar zur Seite abgeben!');
}

$_POST['name'] = htmlspecialchars($_POST['name']);
$_POST['email'] = htmlspecialchars($_POST['email']);
$_POST['email'] = htmlspecialchars($_POST['email']);

//id kannst du weglassen wenn du diese in der datenbank mit auto_increment eigenständig erstellen lässt
$sql = "INSERT INTO `comment` (`name`, `email`, `text`, `ip`) VALUES ('".$_POST['name']."', '".$_POST['email']."', '".$_POST['text']."', '".$_SERVER['REMOTE_ADDR']."')";
mysql_query($sql, $mysql);

echo 'Danke f&uuml;r deinen Eintrag!<br /><a href="output.php">Zu den Komentaren</a>';
?>
</body>
</html>

So, ich hoffe das passt und du kommst nun weiter... hier noch ein Bild das es funktioniert....
 
Zuletzt bearbeitet:

Ammersee

Laborant

AW: Kommentarfunktion

Vielen Vielen Vielen Dank
Meine Rettung ich werd jetzt auch gleich mein php buch rausziehen und bis zu den träumen mir den sinn des fetch objects und arrays durchzulesen
Sehr genial meine Rettung, hätte gedacht das ich das nie auf die Reihe bekomme naja hab ich ja auch nicht muss ich dann morgen gleich nochmal selber schreiben mal schauen wo ich dann hängen bleibe ;)
Also nochmals merci und a guade Nacht

Ammersee
 

Ammersee

Laborant

Grüß euch,

so jetzt bin ich schon echt weit aber wie es so halt ist wenn man seine eigene Seite macht kann man nie genug bekommen. Die Kommentarfunktion klappt wunderbar danke nochmal, aber jetzut will ich mehr also wenn ihr HIER
auf Kommentar abgeben klickt steht unter irgendein Artikel. Dort dann ein Kommentar abgebt leitet er ja weiter auf eine andere Seite. Würde es gehen dass er das Fenster Kommentar abgeben schliesst sowie er es nmacht wenn du auf verkleinern drückst. Und dann evtl noch das soeben gfepostete Kommentar anzeigt. Ich weiss jetzt reichts langsam wär aber trotzdem schön wenn mir jemand hilft.

Mit freundlichen Grüßen Andi
 

Flegma

Nicht mehr ganz neu hier

AW: Kommentarfunktion

nochmal bitte... :D ja servus erstmal so du möchtest

-> Wenn das Formular abgeschickt wurde, dass sich ein neues fenster öffnet
-> Und das alte Fenster soll sich minimieren?

ist das richtig so? Wenn ja wäre davon abzuraten, weil viele firefox benutzen und neue fenster sich im tab öffnen und wenn man dann das alte min. wird das neue logischer weise auch klein
 

Ammersee

Laborant

AW: Kommentarfunktion

Grüß dich

danke für die schnelle Antwort
ich glaub ich hab mich flasch ausgedrückt, also nein will nicht dass sich ein neues Fenster öffnet, es soll das Fenster geöffnet bleiben wo man das Kommentar postet, aber da wo du das Kommentar abgibst soll sich das Formular schliessen und statt dessen das soeben eingetragene Kommentar
stehen
mhm ist glaub ich echt unmöglich kann mir garnicht vorstelllen wie das gehen soll ich brauch ja diese action"eintragen.php", oder ?
Vielleicht auf der eintragen php ne direkte weiterleitung wieder zur Seite wo das Kommentar abgegeben wurde mal gucken vielleicht bekomm ichs hin wenn ihr noch wisst meldet euch doch

Grüße Andi
 

Flegma

Nicht mehr ganz neu hier

AW: Kommentarfunktion

ähm lad doch einfach die seite neu...wenn du deine funktion zum eintragen in die db durchlaufen hast kann doch am ende ein

header('location: wo_auch_immer.php');

stehen sodass deine seite neugeladen wird und dein commend fenster ist zu und dein kommentar steht da iwo :D wenn dich das neuladen stört musst du halt beim button mit onClick="" arbeiten und den java script code eingeben bzw. die funktion aufrufen die das fenster wieder schließen lässt
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.155
Beiträge
2.581.854
Mitglieder
67.221
Neuestes Mitglied
opaklaus
Oben