Hi all,

Ben opzoek naasr een functie voor een php forum.

Men wil graag voordat er een bericht wordt gepost dat ze het voorbeeld zien.

Heeft iemand een idee?
Wat is het probleem?
Wat heb je zelf al bedacht?
POST het bericht en toon het?


<?php
if(($_SERVER['REQUEST_METHOD']=='POST') && (isset($_POST['preview']))) {
// toon preview
}
?>
hoe? :$


if(empty($_GET['pagina']))
	header("location: ../../index.php?pagina=forum/beheer");

/* beveiliging(4); */

$delete = "DELETE FROM forum_flood WHERE tijd < ".time()." - ".$website['flood']."";
mysql_query($delete)or die(mysql_error());

$select = "SELECT * FROM forum_onderwerpen WHERE id = '".$_GET['id']."'";
$query = mysql_query($select)or die(mysql_error());
$list = mysql_fetch_object($query);

$select2 = "SELECT * FROM forum_flood WHERE ip = '".$ip."'";
$query2 = mysql_query($select2)or die(mysql_error());

$select3 = "SELECT * FROM leden_gegevens WHERE id = '".$_COOKIE['id']."'";  
$query3 = mysql_query($select3) or die(mysql_error());
$list3 = mysql_fetch_object($query3);

$select4 = "SELECT * FROM forum_subcategorieen WHERE id = '".$list->forum."'";
$query4 = mysql_query($select4)or die(mysql_error());

if(mysql_num_rows($query) == 0)
{
	echo "<div class=\"titel\">Fout</div>";
	echo "<div class=\"bericht\">Dit topic bestaat niet... <a href=\"javascript:history.go(-1)\">Ga terug</a></div>";
}
elseif(mysql_num_rows($query2) != 0)
{
	echo "<div class=\"titel\">Fout</div>";
	echo "<div class=\"bericht\">Je hebt net een bericht gepost, je moet ".$website['flood']." seconden wachten... <a href=\"javascript:history.go(-1)\">Ga terug</a></div>";
}
elseif($list->laatste < time() - 60 * 60 * 24 * $website['oude'])
{
	echo "<div class=\"titel\">Fout</div>";
	echo "<div class=\"bericht\">Je kan niet meer reageren in een topic die ouder is dan ".$website['oude']." dagen... <a href=\"javascript:history.go(-1)\">Ga terug</a></div>";
}
elseif($list->status == 1 || $list->status == 3)
{
	echo "<div class=\"titel\">Fout</div>";
	echo "<div class=\"bericht\">Je kan geen berichten plaatsen in gesloten topics... <a href=\"javascript:history.go(-1)\">Ga terug</a></div>";
}
elseif(mysql_num_rows($query4) == 0)
{
	echo "<div class=\"titel\">Fout</div>";
	echo "<div class=\"bericht\">Dit forum bestaat niet... <a href=\"javascript:history.go(-1)\">Ga terug</a></div>";
}
elseif($list4->beveiligd == 1 && ($list3->status != "Beheerder" && $list3->status != "SuperModerator" && $list3->status != "Moderator"))
{
	echo "<div class=\"titel\">Fout</div>";
	echo "<div class=\"bericht\">Je kunt geen berichten posten in een forum dat enkel toegankelijk is voor crewleden... <a href=\"javascript:history.go(-1)\">Ga terug</a></div>";
}
else
{	
	if($_GET['actie'] == "verzenden") 
	{
		if(empty($_POST['bericht'])) 
		{ 
			echo "<div class=\"titel\">Fout</div>";
			echo "<div class=\"bericht\">Je hebt geen bericht ingevuld... <a href=\"javascript:history.go(-1)\">Ga terug</a></div>";
		}
		elseif(smilieslimiet($_POST['bericht']) > $website['smilies'])
		{
			echo "<div class=\"titel\">Fout</div>";
			echo "<div class=\"bericht\">Je hebt teveel smilies gebruikt... <a href=\"javascript:history.go(-1)\">Ga terug</a></div>";
		}
		else 
		{
			/* if($list->notificatie ==1)
			{
				$select5 = "SELECT * FROM leden_gegevens WHERE id = '".$list->auteur."'";
				$query5 = mysql_query($select5)or die(mysql_error());
				$list5 = mysql_fetch_object($query5);

				mail("".$list5->naam." <".$list5->email.">","Reactie op ".$website['naam']."","Beste,\n\ner is gereageerd in uw topic! Klik op onderstaande link om het te lezen:\n".$website['link']."/index.php?pagina=forum/lees&id=".$list->id."\n\n".$website['naam']."\n".$website['url']."", "From: ".$website['naam']." <".$website['email'].">");
			}

			$select6 = "SELECT DISTINCT(auteur) AS auteur FROM forum_reacties WHERE topicid = '".$list->id."' AND notificatie = '0' AND auteur != '".$list->auteur."'";
			$query6 = mysql_query($select6)or die(mysql_error());
				
			while($list6 = mysql_fetch_object($query6))
			{
				$select7 = "SELECT * FROM leden_gegevens WHERE id = '".$list6->auteur."'";
				$query7 = mysql_query($select7)or die(mysql_error());
				$list7 = mysql_fetch_object($query7);

				mail("".$list7->naam." <".$list7->email.">","Reactie op ".$website['naam']."","Beste,\n\ner is gereageerd in uw topic! Klik op onderstaande link om het te lezen:\n".$website['link']."/index.php?pagina=forum/lees&id=".$list->id."\n\n".$website['naam']."\n".$website['url']."", "From: ".$website['naam']." <".$website['email'].">");
			} */

			$insert = "INSERT INTO forum_reacties (topicid, auteur, bericht, datum, bewerkt, notificatie) VALUES ('".$_GET['id']."', '".$_COOKIE['id']."', '".$_POST['bericht']."', '".date("Y-m-d H:i:s")."', '0000-00-00 00:00:00', '".waarde($_POST['notificatie'])."')";
			mysql_query($insert)or die(mysql_error());

			$update = "UPDATE forum_onderwerpen SET laatste = '".time()."' WHERE id = '".$_GET['id']."'";
			mysql_query($update)or die(mysql_error());

			$insert = "INSERT INTO forum_flood (ip, tijd) VALUES ('".$ip."', '".time()."')";
			mysql_query($insert)or die(mysql_error());
		
			$update = "UPDATE leden_gegevens SET posts = posts + 1 WHERE id = '".$_COOKIE['id']."'";  
			mysql_query($update)or die(mysql_error()); 

			echo "<meta http-equiv=\"refresh\" content=\"3;URL=index.php?pagina=forum/lees&id=".$_GET['id']."\">";
						
			echo "<div class=\"titel\">Toevoegen</div>";
			echo "<div class=\"bericht\">Het bericht werd succesvol toegevoegd!</div>";
		}
	}
	else
	{
		if($_GET['quote'] == 1) 
			$bericht = "[quote]".preg_replace("!\\[quote\](.*?)\[/quote\]!Usi","[...]", $list->bericht)."[/quote]";
		elseif($_GET['quote'] == 2)
		{
			$select7 = "SELECT * FROM forum_reacties WHERE id = '".$_GET['reactieid']."'";
			$query7 = mysql_query($select7)or die(mysql_error());
			$list7 = mysql_fetch_object($query7);

			$bericht = "[quote]".preg_replace("!\\[quote\](.*?)\[/quote\]!Usi","[...]", $list7->bericht)."[/quote]";
		}

		$onderwerp = $list->onderwerp;	
		$onderwerp = htmlspecialchars($onderwerp);
		$onderwerp = strtolower($onderwerp);
		$onderwerp = ucwords($onderwerp);
							
		echo "<div class=\"titel\">Reageren op ".$onderwerp."</div>";
		echo "<div class=\"bericht\">";
		echo "<form method=\"POST\" onsubmit=\"wachten()\" action=\"index.php?pagina=forum/reageren&id=".$_GET['id']."&actie=verzenden\" name=\"formulier\">";
		echo "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"98%\">";				
		echo "<tr>";
		echo "<td width=\"25%\">Knoppen</td>";
		echo "<td width=\"75%\">";
		knoppen();
		echo "</td>";
		echo "</tr>";
		echo "<tr>";
		echo "<td valign=\"top\">Bericht</td>";
		echo "<td><textarea rows=\"10\" name=\"bericht\" cols=\"62\">".$bericht."</textarea></td>";
		echo "</tr>";
		echo "<tr>";
		echo "<td>Smilies</td>";
		echo "<td>";
		smilietoevoegen();
		echo "</td>";
		echo "</tr>";
		echo "<tr>";
		/* echo "<td>Notificatie</td>";
		echo "<td><input type=\"checkbox\" name=\"notificatie\" value=\"0\" style=\"border: 0px\"";

		if($list3->berichten == 1)
			echo " checked"; */

		echo "></td>";
		echo "</tr>";
		echo "<tr>";
		echo "<td></td><td><input type=\"submit\" value=\"Verzenden\" name=\"knop\"> <input type=\"reset\" value=\"Opnieuw\" name=\"opnieuw\"></td>";
		echo "</tr>";
		echo "</table>";
		echo "</form>";
		echo "</div>";
	}
}
?>
Ah, je gebruikt dus GET om een actie (verzenden) aan te roepen. Als je in die bewuste if-statement een elseif toevoegt met GET preview, dan kan je de POST-variabelen erin gebruiken samen met de e.v.t bericht opmaak-functies zoals UBBcodes en smilies.

Overigens wil ik wel vermelden dat je script niet echt geweldig gebouwd is:
- Foutafandeling ontbreekt
- SQL injection is mogelijk en je kan worden gehacked.
:$ sorry krijg het niet voor elkaar. Zou je alsjeblieft kunnen kijken of je een voorbeeldje kan maken? Sorry ben waarschijnlijk erg lastig.

Alvast ontzettend dank!

Daniël
Op lijn 107 maak je een nieuwe elseif-statement aan, en die noem je 'preview' of 'voorbeeld.'
Hi,

Krijg het nog niet voor elkaar, kun je nog een maal helpen?

Many thanks
Wat lukt er niet? Wat heb je geprobeerd?
 elseif($_GET['voorbeeld'] == ?)
? weet ik niet
$_GET['actie'] == "voorbeeld"

Reageren