Ik wil een forum gaan maken met daarin het gebruik van UBB code. Nu heb ik een script gevonden hier op de site wat z'n werk perfect doet.
Nu heb ik op 3 punten nog wat advies nodig en graag zou ik jullie daarbij willen raadplegen.
Punt1: Ik wil niet dat mensen HTML kunnen gebruiken. Dus heb wat gezocht hier op de site en op google. Nu kwam ik eregi tegen om een invoer te checken op bepaalde tekens. Nu had ik dit in gedachten.
echo"Uw bericht bevat HTML code dit is niet toegestaan";
}
else{
// Gewoon doorgaan met het script
}
?>
Alleen ik vindt dit niet echt de oplossing omdat ik dan de toets < helemaal uitsluit. Is er geen betere oplossing voor? Iets wat de tags eruit haalt maar de rest laat staan. Zoek ik niet hij moet echt controleren op HTML en als mensen dat proberen te gebruiken moet ie terug gaan naar het bericht met een foutmelding.
Punt2: Deze is waarschijnlijk iets simpeler. Het UBB script maakt er netjes HTML code. Nu zit ik alleen te twijfelen hoe ik het wil gaan toepassen. Bericht met UBB code opslaan in de database en bij het uitlezen door het UBB script heen halen (lijkt me het veiligst). Of het bericht laten checken voordat het in de database wordt gedumpt en gewoon in database plaatsen met HTML code en al zodat maar één keer het bericht door het UBB script hoeft (lijkt me het snelst). Het forum moet snel blijven. De toepassing waar ik het misschien wil voor gaan gebruiken. Heeft op piek dagen +/- 100 bezoekers per uur . Waarvan 25% reageert in topics. Geen schokkende aantallen maar snelheid vindt ik belangrijk.
Punt3: De topics en de reacties aan elkaar koppelen kan ik dat het beste in MySQL doen. Doormiddel van bijvoorbeeld innerjoin. Of gewoon in php via 2 MySQL queries? Denk zelf dat innerjoin snelste is maar als ik toch aan het vragen ben kan deze er ook wel bij
Ik hoop dat dit genoeg informatie is als het nog onduidelijk is of als jullie aanvulling willen dan hoor ik het graag.
ps. Ik ben geen php grootmeester maar wil het graag leren door de uitdaging aan te gaan door een forum te maken.
1. Je zou ook gewoon de tags die niet mogen in een array kunnen zetten en dan zou kijken..
2. Gewoon met ubb en al in de database, dus je bericht bevat bijvoorbeeld dit: Dit is een [b]test[/b ] bericht (spatie bij end tag van b om te voorkomen dat het dikgedrukt hier op het forum word )
En dan met uitlezen vervang je de [b] door html om dikgedrukt te maken.
3. Je kan het met joins doen of gewoon in 1 query 2 tabellen oproepen
Ik wil niet dat mensen HTML kunnen gebruiken. Dus heb wat gezocht hier op de site en op google. Nu kwam ik eregi tegen om een invoer te checken op bepaalde tekens. Nu had ik dit in gedachten. Alleen ik vindt dit niet echt de oplossing omdat ik dan de toets < helemaal uitsluit. Is er geen betere oplossing voor? Iets wat de tags eruit haalt maar de rest laat staan. Zoek ik niet hij moet echt controleren op HTML en als mensen dat proberen te gebruiken moet ie terug gaan naar het bericht met een foutmelding.
Er zijn verschillende oplossingen voor dit probleem. Maar om de beste eruit te vissen wil ik je even wat vertellen over het gebruik van je database.
De bedoeling van zaken opslaan in je database is dat je die gegevens later op een zinvolle manier weer kan gebruiken. Door goed normaliseren en het opslaan van de juiste informatie zorg je ervoor dat je alle gegevens eruit kan halen die je nu hebt, maar die je ook eventueel in de toekomst zou willen integreren. Het is dus het slimst om alle informatie die de user invoert gewoon in de database te zetten. Dat is dan gewoon de 'ruwe' informatie. Wanneer je het zaakje dan gaat uitlezen bepaal je wat er wel/niet mag.
Dit geldt dus ook voor punt 2 wat je aanhaalt.
Citaat:
De topics en de reacties aan elkaar koppelen kan ik dat het beste in MySQL doen. Doormiddel van bijvoorbeeld innerjoin. Of gewoon in php via 2 MySQL queries? Denk zelf dat innerjoin snelste is maar als ik toch aan het vragen ben kan deze er ook wel bij
Het probleem wat hier naar voren komt is dat er meerdere reacties horen bij één topic. Je krijgt dus een herhalende groep erin zitten. Als je die in een query eruit wilt halen krijg je dus results waar telkens ook weer de titel van het topic zit vermeld.
Het beste is dus om er 2 queries van te maken. 1 losse voor het ophalen van de topicinfo en daarna 1 met een while-lus om alle reacties uit te lezen op een topic.
Punt1: Ben ik nog niet helemaal overuit. Ik denk dat ik een array ga maken waar de tags inkomen die niet mogen. Ik twijfel alleen nog om toch eregi te gebruiken omdat die me het effectiefst lijkt.
Punt2: Gewoon met ubb en al opslaan in de database.
Punt3: Worden dus toch 2 queries.
Voor punt1 hoop ik nog wat beters te vinden want ik wil absoluut geen html invoer op het forum.
ps: mysql en php moet natuurlijk ook gefilterd worden.
Maar als je het in die arrays doet moet je alle html codes in een array gaan zetten!
(stel dat die array er zo uit ziet:
<b>
<u>
<i>
(nog meer maar dat doet er niet toe)
en iemand in je forum tikt <b class="jo"> kan hij alsnog je site lamleggen!
@urqbz: daarom dat je PHP.net: strip_tags moet gebruiken!
@siliecom14: hij wil dat er geen HTML code in de $string zit (zie vooral zijn code fragment )
Dat is dus niet de bedoeling. Ik wil dus als er HTML inzit dat de pagina terug gaat naar het invoer veld met bv een javascript popup dat html code niet is toegestaan. html vervangen voor iets of de helft weghalen zie ik niet echt zitten.
En er is geen functie in php die scant op html code en daarna terug gaat naar invoer pagina.
Edit: Ik ben blij dat zelfs onder de gevorderde er wat onduidelijkheid is ligt het toch niet helemaal aan mij.
Dat is dus niet de bedoeling. Ik wil dus als er HTML inzit dat de pagina terug gaat naar het invoer veld met bv een javascript popup dat html code niet is toegestaan. html vervangen voor iets of de helft weghalen zie ik niet echt zitten.
Waarom zou je dat in godsnaam willen. Dit is alleen extra moeite doen voor iets wat niet nodig is. Ook heb je dan niet naar mijn uitleg gekeken. Mocht je ooit over willen schakelen op een html editor en toch html toelaten dan zit je ermee tekijken.
Zo beter stijn? Niet dat ik denk dat er veel mensen zijn die <= gaan gebruiken. Maar als het goed is worden nu alle < waar achter direct een letter komt geweigerd. En alle afsluitende tags </ weigert ie ook.
Proximus, dat heeft geen nut. Je slaat hem op in een MySQL of wat dan ook, als bijv:
Hallo, ik ben <a href="blabla">Toetiefroetie</a>
(Die <a> kwam nu wel van de UBB af!)
Nu laat je hem zien na hem door htmlspecialchars te hebben gehaald als:
Hallo, ik ben <a href="blabla">Toetiefroetie</a>
Dan heeft die link toch geen nut meer?
Eerst door de htmlspecialchars halen en dan pas door de UBB? :B