Simpel forum

Door Jeroen v schie, 19 jaar geleden, 6.249x bekeken

Dit script is niet afkomstig van mij maar ik heb het zodanig aangepast dat het wat beter er uit ziet. het script komt van : http://www.phphulp.nl/php/scripts/6/112/
oud script : http://members.lycos.nl/svdedriehoek/forum/topics.php
Nieuw : http://members.lycos.nl/jeroenvschie/forum.php

ik heb Topic toevoegen dan onder een beveiliging zitten zodat niet iedereen er wat kan plaatsen.

Voorbeeld: http://members.lycos.nl/jeroenvschie/forum.php

Gesponsorde koppelingen

PHP script bestanden

  1. simpel-forum

 

Er zijn 19 reacties op 'Gastenboeken fora'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jelle Posthuma
Jelle Posthuma
19 jaar geleden
 
0 +1 -0 -1
Heel simpel.
Niet dat dat slecht is of zo, maar het lijkt eerder op een gemodificeerd gastenboek eerlijk gezegd...
Mede omdat er helemaal geen gebruikers systeem in zit, dat maakt een forum persoonlijker.

Emoticons en badwords filter kan beter met database, dan kan je er ook een admin aan koppelen en zelf items toevoegen.
Probeer zo'n klein forum ook eens met DIV's op te bouwen.
Dat is een stuk netter in de code, aangezien er niet zo veel code is.
Michael
michael
19 jaar geleden
 
0 +1 -0 -1
Ik vind het wel grappig voor een beginner! Maar er zitten echt een paar slordigheidjes in die je moet rechtzetten bij het delen van een script :)

Allereerst hoef je niet bij elke regel een echo te plaatsen en hoef je geen back slash te gebruiken als je " output.
bijvoorbeeld dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
 echo "<tr><td>Bericht:*</td></tr>";
    echo "<tr><td><textarea name=\"beri_cht\" rows=\"10\" cols=\"90\"></textarea></td></tr>";
?>

Kan je ook zo opschrijven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
 echo '
<tr>
  <
td>Bericht:*</td>
<
/tr>
<
tr>
  <
td><textarea name="beri_cht" rows="10" cols="90"></textarea></td>
<
/tr>";
?>


Verder moet je ook de queries opvangen met een error code en dat kan je zo bij een insert query:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$result
= mysql_query($query) or die(mysql_error().'<br><br>In Query:'.$query);
?>


En nog iets. Je kijkt niet of een $get variabele wel bestaat of een nummer bevat als je em in de query gooit. En je beveiligt de query ook niet tegen SQL injectie.

zo zet je een waarde veilig in een query (van te voren even checken of ie wel bestaat natuurlijk met bijvoorbeeld empty() of bij een id is_numeric()):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
$sql
= "
INSERT INTO replys
naam = '"
. mysql_real_escape_string($_POST['na_am']) . "',
bericht = '"
. mysql_real_escape_string($_POST['beri_cht']) . "',
datum = '"
. mysql_real_escape_string($datum) . "',
tid = '"
. mysql_real_escape_string($_GET['id']) . "'";
?>

By $_GET['id'] hoeft het eigenlijk niet want daar moet je gewoon van te voren controleren of het een id is.

Verder laat je php de datum berekenen. Dit is zonde van de kracht. Je kan het beter SQL laten doen. dit doe je door bijvoorbeeld CURRENT_DATE() in de query te zetten

Wat wel heel erg schadelijk is dat je de date zo defineer: $datum = date("d.m.Y");

In een database moet het echter deze format hebben: yyyy-mm-dd. Je kan de datum op het scherm zetten hoe jij wilt maar dit is de standaard hoe die de database in moet.

Ik denk als je deze aanpassingen nog even maak dat het wel een leuk script is :)
Jelle Posthuma
Jelle Posthuma
19 jaar geleden
 
0 +1 -0 -1
Quote:
In een database moet het echter deze format hebben: yyyy-mm-dd. Je kan de datum op het scherm zetten hoe jij wilt maar dit is de standaard hoe die de database in moet.


Of een timestamp gebruiken.
Dat is niks meer als een int van een paar getallen die je gewoon in alle soorten voormaten kan weergeven.

date("d-m-Y H:i:s",$timestamp);

En zo kan je ook de tijd weglaten, of alleen de tijd weergeven, en noem maar op.
Crispijn -
Crispijn -
19 jaar geleden
 
0 +1 -0 -1
Nee, nooit een timestamp gebruiken! Wanneer je dan wil gaan rekenen moet je weer heel omslachtig gaan doen om uitiendleijk tot een resultaat te komen. SQL heeft toch niet voor niets de DATE en DATETIME velden uitgevonden?
Jelle Posthuma
Jelle Posthuma
19 jaar geleden
 
0 +1 -0 -1
@Crispijn, ik noem alleen een 2e alternatief op, om datetime zooi niet zo statisch in de DB te hebben.
Ik weet heus wel dat er ook DATE en DATETIME velden zijn voor dit doel.
Frank -
Frank -
19 jaar geleden
 
0 +1 -0 -1
@Jelle: Leuk en aardig, maar een Unix-timestamp (daar hebben we het hier over) is een ramp wanneer je vergelijkingen wilt gaan maken. Ga maar eens alle records opzoeken die op een maandagochtend tussen 07:00 en 10:00 zijn aangemaakt...

Dat je een datatype noemt, leuk en aardig, maar vergeet niet de voor- én nadelen te benoemen. En een Unix-timestamp heeft vooral nadelen.

Edit: Het is trouwens wel een beroerd script! Komt wat mij betreft in aanmerking voor de prullenbak. Helaas.
Ericbruggema x
ericbruggema x
19 jaar geleden
 
0 +1 -0 -1
paar tips:

$_SERVER['REQUEST_METHOD'] == "POST" voor controle submit form
htmlspecialchars ;) voor de teksten!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php ipv [code]<?
datetime ipv timestamp zoals bovenstaand al vermeld is.
Jurgen assaasas
Jurgen assaasas
19 jaar geleden
 
0 +1 -0 -1
Ik vind het één grote baggerzooi, vol met SQL injectie mogelijkheden, queries worden niet gecontroleerd. En waarom alles escapen als je ook met ' kan werken. De namen van je variabelen snap ik ook niet echt, wat $_POST['na_am'] Waar slaat dat op? Ik snap dat je naam bedoeld maar maak er dan $_POST['naam'] van. Ook zou het handig zijn als je iets verkeerd invult (topic titel vergeten bijv.) de waarden van de $_POST array terug in de tekstvelden zetten, stel je hebt een ellelang topic, en dan vergeet je iets, tja.. helemaal opnieuw typen.
Jeroen v schie
Jeroen v schie
19 jaar geleden
 
0 +1 -0 -1
ik ben zelf ook nog aardig : zoals ze dat zeggen : Noob

maar ik ga wel proberen er een inlog systeem aan vast te maken met members enz.

op mijn eigen site heb ik al een inlog systeem
wat ik dan wil doen is de naam van de gebruiker dan te laten invoegen bij het topic of reply


misch met wat hulp van jullie?
deze site heet uiteraard phpHULP

ook zal ik emoticons proberen te verbeteren
en de rest zal ik ook proberen te verbeteren

Bedankt voor jullie hulp tot nu toe!
Jeroen v schie
Jeroen v schie
19 jaar geleden
 
0 +1 -0 -1
ik heb alle backslashes verwijderd zoals je aangaf michael

Bedankt voor de tip!
Michael
michael
19 jaar geleden
 
0 +1 -0 -1
nu nog van de dubbele quotes singele quotes maken dus zo

echo'bla bla bla id="6" bla bla bla';

zoals ik al had aangegeven


19 jaar geleden
 
0 +1 -0 -1
Ik zie <? shorttags en dat staat me niet aan. Gebruik nooit shorttags! Dus gewoon netjes 3 tekens erachter typen: <?php
Kevichill
Kevichill
19 jaar geleden
 
0 +1 -0 -1
kvind het meer op gastenboek lijken
B L
B L
19 jaar geleden
 
0 +1 -0 -1
Ik eerlijk gezegd ook , maar zou het zo kunnen worden aangepast dat er ook categorieën zijn (a) ?


19 jaar geleden
 
0 +1 -0 -1
@michael: Dát hoeft niet per se. Het is maar net wat je liever gebruikt. Ik gebruik liever dubbele quotes, omdat ik het zo heb geleerd, maar ook omdat ik dingen als tab's en newline's kan toevoegen.
Natuurlijk moeten dan de dubbele quote's wel worden ge-escaped...
In sommige stukken zou zelfs de heredoc manier kunnen worden gebruikt.

Ik ben het wel met je eens dat hoe de strings zijn nu niet kloppen.
Niek Kasius
Niek Kasius
19 jaar geleden
 
0 +1 -0 -1
mag ik vragen wat het nut is van dat liggende streepjes onderandere hierin: " 'beri_cht' " betekenen?

Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in C:\wamp\www\cafehofland\nieuwemap\forum.php on line 38

Parse error: parse error, unexpected T_STRING, expecting ')' in C:\wamp\www\cafehofland\nieuwemap\functions.php on line 26

trouwen in dat functie script staan een aantal dubbelen smylies.
En moet dat niet zo:
$bericht = str_replace(":)","<img src=\"smileys/1.gif\">",$bericht);
zo staat het in de ubb van mijn gastenboek namelijk.

ohja ik zou het bijna vergeten te vragen! is het script geschreven voor php4?
want ik moest al die Dubbele quotes voorzien van een slash zoals hieronder:
href=\"replys.php?id=\"" . $row['id'] . ">" . $row['titel'] . "\">
ik vraag het maar omdat het pas werkt nadat ik dat gedaan heb, alleen die fout in dat functie script heb ik nog niet opgelost
PAS OP!!! dit is geen kritiek. want ik kan zelf geen php script schrijven.
Stan Van langen
Stan Van langen
16 jaar geleden
 
0 +1 -0 -1
Het script werkt niet...
Milo S
Milo S
16 jaar geleden
 
0 +1 -0 -1
In het vervolg graag je antwoord iets netter formuleren. Dat jij en ik gemakkelijk een forum kunnen maken, zegt niet dat iedereen die op deze site komt dat kan.[/modedit]
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Milo S
Milo S
16 jaar geleden
 
0 +1 -0 -1
Ik snap je punt Chris, maar ze kunnen toch wel lezen en naar de datum kijken? Tis vervelend dat steeds weer hetzelfde verteld moet worden aan de nieuwkomers. Ze onderzoeken gewoon te weinig.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. simpel-forum

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.