comments
Ik wil graag aan mijn CMSje, comments toevoegen, zodat het dus voor bezoekers mogelijk wordt te reageren op berichten.
Hoe kan ik dit het beste aanpakken?
Er is in de database nu een tabel met daarin de content.
ID | TITLE | TEXT | pub_date | edit_date | off_date | views | status | archive
Ik dacht zelf aan zo iets
ID | CID | auteur | comment | IP | status | pub_date
Zijn er al scripts voor het plaatsen van een comment formulier? Het lijkt me dat ik iets zal moeten doen aan injections, en spam??
Alle suggesties zijn welkom!
Groeten,
Tim
Gewijzigd op 01/01/1970 01:00:00 door Tim
SQL Geregistreerde woorden, die Engels zijn. Als jij die woorden gebruikt als veld-/tabelnaam mislukt je query eigenlijk altijd.
Ik hoop dat CID de terugkoppeling is naar de content tabel? Misschien moet je hier ook even zoeken naar reactie scripts.
Edit: Let bij je keuze ook even op de reacties bij het script!!!!
Dat laatste zeker. Bovendien zou ik zoveel mogelijk vermijden engelse woorden als veld-/tabelnamen te gebruiken in je database. Er zijn namelijk Ik hoop dat CID de terugkoppeling is naar de content tabel? Misschien moet je hier ook even zoeken naar reactie scripts.
Edit: Let bij je keuze ook even op de reacties bij het script!!!!
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
Bedankt, hier ga ik eens goed naar kijken.
Eigelijk zijn alle veldnamen in mijn db engels, automatise ;-)
CID is inderdaad bedoeld als terugkoppeling naar de content tabel, zo zijn ook alle anderen sub_tabelen gekoppeld.
Btw, het is makkelijker om al je namen in 1 taal te doen ipv meerdere.. (Auteur, comment...)
En toch is de voorkeur engels.. als jij je script ergens op internet gooit omdat je het wilt delen, snappen anderen meteen ook wat er bedoeld wordt. Jezper doelt denk ik op de kolmnaam TEXT, wat geen logische keuze is. Het geeft mij niet het idee wat voor TEKST daar in staat, maak daar bijv. content van. Verteld mij meer dan TEXT.
Terence schreef op 29.01.2009 19:00:
En toch is de voorkeur engels.. als jij je script ergens op internet gooit omdat je het wilt delen, snappen anderen meteen ook wat er bedoeld wordt. Jezper doelt denk ik op de kolmnaam TEXT, wat geen logische keuze is. Het geeft mij niet het idee wat voor TEKST daar in staat, maak daar bijv. content van. Verteld mij meer dan TEXT.
Nou heeft 'ie geluk dat ie geen 'from' o.i.d. gebruikt. Maar gebruik dan iets moeilijkere namen, waarvan je zeker bent dat die niet geregistreerd zijn.
Jezpur schreef op 29.01.2009 19:06:
Nou heeft 'ie geluk dat ie geen 'from' o.i.d. gebruikt. Maar gebruik dan iets moeilijkere namen, waarvan je zeker bent dat die niet geregistreerd zijn.
Het gaat mij er vooral om dat je in 1 oog opslag kan zien wat er zich in dat veld zit. Als je een id van een tekst moet opslaan, kan je daarvoor aid gebruiken, maar als je author_id gebruikt geeft dit veel meer duidelijkheid als je later iets terug zoekt.Terence schreef op 29.01.2009 19:00:
En toch is de voorkeur engels.. als jij je script ergens op internet gooit omdat je het wilt delen, snappen anderen meteen ook wat er bedoeld wordt. Jezper doelt denk ik op de kolmnaam TEXT, wat geen logische keuze is. Het geeft mij niet het idee wat voor TEKST daar in staat, maak daar bijv. content van. Verteld mij meer dan TEXT.
Nou heeft 'ie geluk dat ie geen 'from' o.i.d. gebruikt. Maar gebruik dan iets moeilijkere namen, waarvan je zeker bent dat die niet geregistreerd zijn.
Ik gebuik altijd engels omdat het idd makkelijker te delen is, en ik vindt het persoonlijk ook makkelijker werken.
@Tim: 'TEXT content' als tabelnaam? Foute naam, veranderen die hap.
@jezpur nee "content" is de naam ;-)
Code (php)
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
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
<?
// Comments
if ($_POST['pub_date'] && ($_POST['author'] && $_POST['comment']))
{
$table = "comments";
$sql1 = "INSERT INTO " . $table . " (id, cid, ip, pub_date, name, comment) VALUES ('','" . $_POST['cid'] . "','". $_SERVER['REMOTE_ADDR'] ."','" . stripslashes($_POST['pub_date']) . "','" . stripslashes($_POST['author']) . "','" . stripslashes($_POST['comment']) . "')";
$res1 = mysql_query($sql1);
if ($res1)
{
$insert = "<p>Uw reactie is geplaatst.</p>";
}
else
{
$insert = "<p>Uw reactie kon niet worden opgeslagen.</p>";
}
}
if (empty($_POST['author']))
{
$insert = "<p>U heeft geen naam ingevuld.</p>";
}
if (empty($_POST['comment']))
{
$insert = "<p>U heeft geen bericht ingevuld.</p>";
}
?>
// Comments
if ($_POST['pub_date'] && ($_POST['author'] && $_POST['comment']))
{
$table = "comments";
$sql1 = "INSERT INTO " . $table . " (id, cid, ip, pub_date, name, comment) VALUES ('','" . $_POST['cid'] . "','". $_SERVER['REMOTE_ADDR'] ."','" . stripslashes($_POST['pub_date']) . "','" . stripslashes($_POST['author']) . "','" . stripslashes($_POST['comment']) . "')";
$res1 = mysql_query($sql1);
if ($res1)
{
$insert = "<p>Uw reactie is geplaatst.</p>";
}
else
{
$insert = "<p>Uw reactie kon niet worden opgeslagen.</p>";
}
}
if (empty($_POST['author']))
{
$insert = "<p>U heeft geen naam ingevuld.</p>";
}
if (empty($_POST['comment']))
{
$insert = "<p>U heeft geen bericht ingevuld.</p>";
}
?>
Is dit nu veilig genoeg, ben graag voorzichtig.
Niet Bumpen::
Sorry::
Gewijzigd op 01/01/1970 01:00:00 door Tim
Verder moet je nog even de functie trim() leren gebruiken. Want stel iemand drukt paar keer op spatie, dan kom je ook door je verplicht veld controle heen.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$comment = mysql_real_escape_string(trim($_POST['comment']));
if($comment == "")
{
echo 'Vul alle velden in!!';
}
?>
$comment = mysql_real_escape_string(trim($_POST['comment']));
if($comment == "")
{
echo 'Vul alle velden in!!';
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if ($_POST['pub_date'] && ($_POST['author'] && $_POST['comment']))
{
$table = "comments";
$author = mysql_real_escape_string(trim($_POST['author']));
$comment = mysql_real_escape_string(trim($_POST['comment']));
$sql1 = "INSERT INTO " . $table . " (id, cid, ip, pub_date, author, comment) VALUES ('','" . $_POST['cid'] . "','". $_SERVER['REMOTE_ADDR'] ."','" . stripslashes($_POST['pub_date']) . "','$author','$comment')";
$res1 = mysql_query($sql1);
if ($res1)
{
$insert = "<p>Uw reactie is geplaatst.</p>";
}
else
{
$insert = "<p>Uw reactie kon niet worden opgeslagen.</p>";
}
}
?>
if ($_POST['pub_date'] && ($_POST['author'] && $_POST['comment']))
{
$table = "comments";
$author = mysql_real_escape_string(trim($_POST['author']));
$comment = mysql_real_escape_string(trim($_POST['comment']));
$sql1 = "INSERT INTO " . $table . " (id, cid, ip, pub_date, author, comment) VALUES ('','" . $_POST['cid'] . "','". $_SERVER['REMOTE_ADDR'] ."','" . stripslashes($_POST['pub_date']) . "','$author','$comment')";
$res1 = mysql_query($sql1);
if ($res1)
{
$insert = "<p>Uw reactie is geplaatst.</p>";
}
else
{
$insert = "<p>Uw reactie kon niet worden opgeslagen.</p>";
}
}
?>
zoiets dan?
Gewijzigd op 01/01/1970 01:00:00 door Tim
En vergeet isset() niet, niemand die kan garanderen dat jouw $_POST-variabele bestaat.