Wist je dat V1
Auteur: Tuinstoel - 05 november 2004 - 16:38 - Gekeurd door: Dennisvb - Hits: 8532 - Aantal punten: 4.93 (7 stemmen)
Ehmr jah het is gewoon een WJD script met MySQL en uitleg overal bij.
Wat zit er bij
- admin
- smilies
- woordenfilter
- spamfilter
- paar javascripts ertussen (wou ik proberen )
Je moet het gewoon installeren via je phpMyAdmin zodat de tabel bestaat en dan zou je in principe het gewoon kunnen proberen.
Smilies vind je bij in de download
|
Code: |
<?
////////////////////
// Wist je dat V1 //
// Gemaakt door: //
// René Willemsen //
// November 2004 //
////////////////////
/*
Deze volgende tabel moet je invoeren in je database en de
config hieronder invullen. Dan zou het script klaar moeten zijn voor gebruik.
Veel plezier ermee.
CREATE TABLE wjd (
id INT(11) UNSIGNED AUTO_INCREMENT,
naam VARCHAR(40) DEFAULT '',
email VARCHAR(50) DEFAULT '',
website VARCHAR(100) DEFAULT '',
wjd VARCHAR(255) DEFAULT '',
datum DATETIME DEFAULT '0000-00-00 00:00:00',
ip VARCHAR(16) DEFAULT '0.0.0.0',
PRIMARY KEY (id) );
*/
session_start(); // sessie starten voor de admin
ob_start(); // lelijke foutjes voorkomen
error_reporting(E_ALL); // alle fouten weergeven
mysql_connect('localhost','root','') or die(mysql_error());
// verbinding maken met MySQL server, hostnaam, gebruiker, wachtwoord
mysql_select_db('test') or die(mysql_error());
// database selecteren
$c['naam'] = 'admin'; // Admin naam
$c['pass'] = 'admin'; // Admin wachtwoord
$c['spam'] = 30; // X seconden wachten tot volgend bericht
$c['website'] = true; // Laat website zien, true = ja, false = nee
$c['tabel'] = 'wjd'; // De tabelnaam in de MySQL database
$c['perpagina'] = 10; // Aantal Wistjedatjes per pagina
function smilies($txt)
{ // functie aanmaken voor de smilies en de scheldwoorden filter (is wel zo makkelijk en handig )
$sName = array
('angel','angry','biggrin','blush','confused','cool','cry','eek','grin','huh','mad','notsure',
'ooh','rolleyes','sad','sleep','smile','stress','tongue','urgh','wink','worry','x');
// Array met bestandsnamen erin zonder extensie (ext = .gif)
$sCode = array
('(a)',':(','^^',':$',':s','8-)',':\'(',':o',':D',':?:',':@',':-/',':-o',':roll:',
':sad:',':slaap:',':)',':stress:',':P','>_<',';)',':worry:',':x');
// De betreffende codes ervoor, gaat precies op volgord!
$sSmilie = $txt;
for($i = 0;$i <= (count($sCode)-1);$i++)
{ // aantal smilies door een loop halen, om de tekst dus zo om te zetten naar smilies
$sSmilie = str_replace($sCode[$i],'<img src="smilies/'.$sName[$i].'.gif" border="0">',$sSmilie);
}
$sWoorden = array('hoer','kut','klootzak','mongooltje','kanker');
// Verzin er zelf maar wat, dat zul je vast wel weten
for($iW = 0;$iW <= (count($sWoorden)-1);$iW++)
{
$sSmilie = str_replace($sWoorden[$iW],'***',$sSmilie);
}
return $sSmilie;
}
?>
<html>
<head>
<?
if(isset($_SESSION['cp_beheer']))
{
?>
<script language="javascript" type="text/javascript">
function del(id)
{
if(window.confirm('Ben je zeker dat je dit bericht wilt verwijderen?'))
{
window.location = '?cp=del&id=' + id;
}
}
function loguit()
{
if(window.confirm('Ben je zeker dat je wilt uitloggen?'))
{
window.location = '?cp=loguit';
}
}
</script>
<?
}
?>
<style>
body, table, tr, td, option, textarea, input, a, a:visited, a:hover, a:active
{
font-family: Verdana;
font-size: 9pt;
color: #000000;
}
input, textarea, option
{
border: 1px solid;
background-color: #EFEFEF;
}
.kop
{
background-color: #DDDDDD;
}
.inhoud
{
background-color: #EEEEEE;
}
.1
{
background-color: #B9CFDF;
}
.2
{
background-color: #99BCD4;
}
</style>
<title>Wist je dat</title>
</head>
<body>
<?
// begin echte script
if(isset($_GET['cp']))
{ // als ?cp= bestaat krijg je de volgende actie('s)
if(isset($_SESSION['cp_beheer']))
{ // kijken of de CP beheerder is ingelogd, zoja dit
?>
<table align="center" width="50%">
<tr class="kop">
<td align="center" colspan="3"><b>Controle Paneel</b></td>
</tr>
<?
if($_GET['cp'] == 'mod')
{ // ?cp=mod, het bewerken van berichten
?>
<tr class="inhoud">
<td align="center" colspan="3">
<?
if(!empty($_POST['bewerk']))
{
if($_POST['naam'] == '')
{
echo 'Je hebt geen naam ingevuld!';
}
elseif($_POST['email'] == '' || !eregi('@',$_POST['email']) || !eregi('.',$_POST['email']) || eregi(' ',$_POST['email']))
{
echo 'Je hebt geen geldig email-adres ingevuld!';
}
elseif($_POST['wjd'] == '')
{
echo 'Je hebt geen wist je datje ingevuld!';
}
elseif(strlen($_POST['wjd']) > 255)
{ // met strlen(); controleer je hoeveel tekens iets bevat
echo 'Je wist je datje mag niet meer dan 255 tekens bevatten!';
}
else
{
mysql_query("UPDATE ".$c['tabel']." SET naam = '".addslashes($_POST['naam'])."', email = '".$_POST['email']."', website = '".$_POST['website']."', wjd = '".addslashes($_POST['wjd'])."' WHERE id = '".$_POST['id']."'") or die(mysql_error());
echo 'Wist je datje is succesvol bewerkt!';
}
}
else
{
if(isset($_GET['id']))
{
$bestaat = mysql_result(mysql_query("SELECT COUNT(id) FROM ".$c['tabel']." WHERE id = '".$_GET['id']."'"),0);
// Controleren of het wistjedatje bestaat...
if($bestaat == 0)
{
echo '<i>Deze wist je dat bestaat niet!</i>';
}
else
{
$sql = mysql_query("SELECT naam,email,website,wjd FROM ".$c['tabel']." WHERE id = '".$_GET['id']."'");
while($row = mysql_fetch_assoc($sql))
{
?>
<form method="post" action="<?= $_SERVER['PHP_SELF']; ?>?cp=mod&id=<?= $_GET['id']; ?>">
<input type="hidden" name="bewerk" value="1">
<input type="hidden" name="id" value="<?= $_GET['id']; ?>">
<table align="center" width="50%">
<tr class="kop">
<td align="center" colspan="3">
<b><i>Wist je dat</i> bewerken</b>
</td>
</tr>
<tr class="inhoud">
<td align="right" width="49%">Naam</td>
<td align="center" width="2%">:</td>
<td width="49%"><input type="text" name="naam" value="<?= stripslashes($row['naam']); ?>"></td>
</tr>
<tr class="inhoud">
<td align="right">E-Mail</td>
<td align="center">:</td>
<td><input type="text" name="email" value="<?= $row['email']; ?>"></td>
</tr>
<tr class="inhoud">
<td align="right">Website</td>
<td align="center">:</td>
<td><input type="text" name="website" value="<?= $row['website']; ?>"></td>
</tr>
<tr class="inhoud">
<td align="right">Wist je dat</td>
<td align="center">:</td>
<td><input type="text" name="wjd" value="<?= stripslashes($row['wjd']); ?>"></td>
</tr>
<tr class="inhoud">
<td align="center" colspan="3"><input type="submit" value="Bewerken!"></td>
</tr>
</table>
</form>
<?
}
}
}
else
{
?>
Dit ID bestaat niet!
<?
}
?>
<?
}
?>
</td>
</tr>
<?
}
if($_GET['cp'] == 'del')
{ // ?cp=del, het verwijderen van berichten
if(isset($_GET['id']))
{ // kijken of ID er wel achter staat;
$wBestaat = mysql_result(mysql_query("SELECT COUNT(id) FROM ".$c['tabel']." WHERE id = '".$_GET['id']."'"),0);
if($wBestaat == 0)
{
?>
<tr class="inhoud">
<td align="center" colspan="3">
<i>Deze wist je dat bestaat niet!</i>
</td>
</tr>
<?
}
else
{
mysql_query("DELETE FROM ".$c['tabel']." WHERE id = '".$_GET['id']."'");
?>
<tr class="inhoud">
<td align="center" colspan="3">
<i>Wist je datje is succesvol verwijderd.</i>
</td>
</tr>
<?
}
}
else
{
?>
<tr class="inhoud">
<td align="center" colspan="3">
<i>Er is geen ID aangegeven, het is niet mogelijk om een wist je datje te verwijderen!</i>
</td>
</tr>
<?
}
}
if($_GET['cp'] == 'loguit')
{ // uitloggen
unset($_SESSION['cp_beheer']);
// de sessie cp_beheer vernietigen
header("Location: ".$_SERVER['PHP_SELF']);
}
else
{ // overzicht v/d berichten
$wAantal = mysql_result(mysql_query("SELECT COUNT(id) FROM ".$c['tabel']),0) or die(mysql_error());
// opvragen van hoeveel wistjedatjes er aanwezig zijn in de database
if($wAantal == 0)
{ // er zijn geen berichten in de database, dus geen mogelijkheden.
?>
<tr class="inhoud">
<td align="center">Er zijn geen Wist-je-datjes aanwezig!</td>
</tr>
<?
}
else
{
function strippen($txt)
{ // even een functie aanmaken voor het inkorten van langere berichten
if(strlen($txt) > 50)
{ // de tekst bevat meer dan 50 tekens, strippen dus
$wStrip = trim(substr($txt,0,47)).'...';
}
else
{ // de tekst is korter dan 50 tekens, dus gewoon zo laten.
$wStrip = $txt;
}
return $wStrip;
}
$i = 0; // voor de kleur om en om.
$sql = mysql_query("SELECT id,wjd FROM ".$c['tabel']." ORDER BY id DESC") or die(mysql_error());
// opvragen van de wistjedatjes
while($row = mysql_fetch_assoc($sql))
{
$wKleur = ($i++ % 2) ? 1 : 2; // bepalen welke kleur er gekozen moet worden
?>
<tr class="<? echo $wKleur; ?>">
<td align="right"><? $mssg = strippen(stripslashes($row['wjd'])); echo smilies($mssg); ?></td>
<td align="center"><a href="JavaScript:del(<? echo $row['id']; ?>);">Verwijder</a></td>
<td align="center"><a href="<? echo $_SERVER['PHP_SELF']; ?>?cp=mod&id=<? echo $row['id']; ?>">Bewerk</a></td>
</tr>
<?
}
}
}
?>
<tr class="inhoud">
<td align="right" colspan="3">
<a href="JavaScript:loguit();">Loguit</a>
</td>
</tr>
</table>
<?
}
else
{ // De CP beheerder is niet ingelogd, inlogscherm + controle van inloggen.
if(!empty($_POST['login']))
{ // Als er op de knop inloggen wordt gedrukt
if($_POST['naam'] == '' || $_POST['pass'] == '')
{ // controle of er wel iets is ingevuld
echo 'Vul wel alle velden in!';
}
elseif($_POST['naam'] != $c['naam'] || $_POST['pass'] != $c['pass'])
{ // naam en/of wachtwoord kloppen niet
echo 'Naam en/of wachtwoord komen niet overeen!';
}
else
{ // alles klopt, sessie registreren en doorverbinden
$_SESSION['cp_beheer'] = true;
echo 'Je bent ingelogd! Als je <b>niet</b> automatisch wordt doorverbonden, klik dan <a href="'.$_SERVER['PHP_SELF'].'">hier</a>!';
header("Location: ".$_SERVER['PHP_SELF']."?cp=");
}
}
else
{ // inlog formuliertje
?>
<form method="post" action="<? echo $_SERVER['PHP_SELF']; ?>?cp=">
<input type="hidden" name="login" value="1">
<table align="center" width="50%">
<tr class="kop">
<td align="center" colspan="3"><b>Controle Paneel</b></td>
</tr>
<tr class="inhoud">
<td align="right">Gebruikersnaam</td>
<td align="center">:</td>
<td><input type="text" name="naam"></td>
</tr>
<tr class="inhoud">
<td align="right">Wachtwoord</td>
<td align="center">:</td>
<td><input type="password" name="pass"></td>
</tr>
<tr class="inhoud">
<td colspan="3" align="center"><input type="submit" value="inloggen"></td>
</tr>
</table>
</form>
<?
}
}
}
else
{ // ?cp= bestaat niet, nu weergeeft hij gewoon de WJD's
$wUrl = (isset($_GET['nav'])) ? '?nav='.$_GET['nav'] : '';
?>
<form method="get" action="<? echo $_SERVER['PHP_SELF'].$wUrl; ?>">
<table align="center" width="50%">
<tr class="inhoud">
<td align="center">
<select name="sortby">
<option value="datum">Datum</option>
<option value="naam">Naam</option>
<option value="website">Website</option>
<option value="email">Email</option>
</select>
<select name="method">
<option value="DESC">Oplopend</option>
<option value="ASC">Aflopend</option>
</select>
<input type="submit" value="Ga">
</td>
</tr>
</table>
</form>
<?
// Er wordt gepost om een WJD toe te voegen.
// Hier komen dus allerlei controles en dergelijke.
if(!empty($_POST['submit']))
{
?>
<table align="center" with="50%">
<tr class="kop">
<td align="center"><b>Wist je datje toevoegen</b></td>
</tr>
<tr class="inhoud">
<td align="center">
<?
if($_POST['naam'] == '')
{
echo 'Je hebt geen naam ingevuld!';
}
elseif($_POST['email'] == '' || !eregi('@',$_POST['email']) || !eregi('.',$_POST['email']) || eregi(' ',$_POST['email']))
{
echo 'Je hebt geen geldig email-adres ingevuld!';
}
elseif($_POST['wjd'] == '')
{
echo 'Je hebt geen wist je datje ingevuld!';
}
elseif(strlen($_POST['wjd']) > 255)
{ // met strlen(); controleer je hoeveel tekens iets bevat
echo 'Je wist je datje mag niet meer dan 255 tekens bevatten!';
}
else
{
mysql_query("INSERT INTO ".$c['tabel']." VALUES ('','".addslashes($_POST['naam'])."','".$_POST['email']."','".$_POST['website']."','".addslashes($_POST['wjd'])."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die(mysql_error());
setcookie('wjd_spam',$_SERVER['REMOTE_ADDR'],time()+$c['spam']);
echo 'Wist je datje is succesvol toegevoegd!';
}
?>
</td>
</tr>
</table>
<?
}
$sArray = array('id,naam,datum,email,website');
// een array voor het sorteren op...
$sField = (isset($_GET['sortby']) && in_array($_GET['sortby'],$sArray)) ? $_GET['sortby'] : 'id';
// bepalen of hij gaat sorteren op een veld, zoja, zit deze dan in de 'geldige' array
$sMethod = (isset($_GET['method']) && $_GET['method'] == 'ASC') ? 'ASC' : 'DESC';
// Bepalen of het oplopend of aflopend wordt
// hier begint het pagina gedoe...
$sAantal = mysql_result(mysql_query("SELECT COUNT(id) FROM ".$c['tabel']),0);
// even het aantal ingevoegde rijen optellen...
$sPaginas = ceil($sAantal / $c['perpagina']);
// Het aantal pagina's berekenen, afgerond naar boven uiteraard
$sUrl = (isset($_GET['sortby'])) ? '&sortby='.$_GET['sortby'] : '';
$sUrl .= (isset($_GET['method'])) ? '&method='.$_GET['method'] : '';
// Even duidelijk maken of er nog iets verder in de adresbalk stond aan informatie,
// zodat het pagina navigeren niet verkeerd afloopt
if(isset($_GET['nav']))
{ // er is mogelijk een geldige pagina geselecteerd...
$sStart = ($_GET['nav'] >= $sPaginas) ? 0 : $_GET['nav'] * $c['perpagina'];
// Als ?nav= hoger is dan het aantal pagina's dan begint hij gewoon bij het begin,
// zoniet dan doet hij gewoon de opgekregen pagina.
$sVolgende = ($sPaginas > 1 && $_GET['nav'] < ($sPaginas-1)) ? '<a href="'.$_SERVER['PHP_SELF'].'?nav='.($_GET['nav']+1).$sUrl.'">Volgende</a>' : '';
// Bepalen of de volgende pagina bestaat, zoja dan bestaat de link
if($sPaginas > 1 && $_GET['nav'] == 1)
{
$sVorige = ($sPaginas > 1 && $_GET['nav'] != 0) ? '<a href="'.$_SERVER['PHP_SELF'].$sUrl.'">Vorige</a>' : '';
}
else
{
$sVorige = ($sPaginas > 1 && $_GET['nav'] != 0) ? '<a href="'.$_SERVER['PHP_SELF'].'?nav='.($_GET['nav']-1).$sUrl.'">Vorige</a>' : '';
}
}
else
{ // er is geen pagina geselecteerd
$sStart = 0;
// Hij begint bij 0 omdat dit de eerste pagina is.
$sVolgende = ($sPaginas > 1) ? '<a href="'.$_SERVER['PHP_SELF'].'?nav=1'.$sUrl.'">Volgende</a>' : '';
$sVorige = '';
// De volgende pagina difineren, als er meer dan 1 pagina is dan komt deze volgende erbij te staan.
}
$sql = mysql_query("SELECT naam,email,website,wjd, DATE_FORMAT(datum,'%d-%m-%y %H:%i') AS datum FROM ".$c['tabel']." ORDER BY ".$sField." ".$sMethod." LIMIT ".$sStart.", ".$c['perpagina']) or die(mysql_error());
// Even wat uitleg over de bovenstaande query:
// Eerst worden een aantal velden gesecteerd, maar het gaat nu vooral om het veld van de tijd/dag
// met DATE_FORMAT(); kun je de tijd omzetten naar een andere weergave.
// Was het daarvoor 2004-11-23, wordt het nu 23-11-04 of hoe je maar net wilt.
// Verder wordt er nog gesorteerd maar dat hele verhaal staat weer boven $sql
// Ook wordt het aantal per pagina gelimiteerd, dit is voor het pagina navigatie
// van belang.
$i = 0;
// Voor het om en om kleurverschil v/d rijen.
while($row = mysql_fetch_assoc($sql))
{
$wKleur = ($i++ % 2) ? 1 : 2;
// bepalen welke kleur er gekozen moet worden
$wSite = ($row['website'] == '' || !eregi('http://',$row['website']) || $c['website'] == false) ? '' : '<a href="'.$row['website'].'" target="_blank">[site]</a>';
// Het bepalen of er wel of geen website is ingevuld
?>
<table align="center" width="50%">
<tr class="<? echo $wKleur; ?>">
<td align="right">Door <a href="mailto:<? echo $row['email']; ?>"><? echo stripslashes($row['naam']); ?></a> <?= $wSite; ?> op <? echo $row['datum']; ?></td>
</tr>
<tr class="<? echo $wKleur; ?>">
<td align="right"><i>Wist je dat</i> <? echo stripslashes(smilies($row['wjd'])); ?></td>
</tr>
</table>
<?
}
?>
<table align="center" width="50%">
<tr class="inhoud">
<td align="center">
<?= $sVorige; ?> <?
for($sI = 1;$sI <= $sPaginas;$sI++)
{ // een simpel for-lusje om de pagina's eronder te weergeven
if(isset($_GET['nav']) && $_GET['nav'] == ($sI-1) || !isset($_GET['nav']) && $sI == 1)
{
// kijken of de huidige pagina in de adresbalk staat, zoja, dan
// kun je niet klikken op het nummer.
?>
[<?= $sI; ?>]
<?
}
else
{
?>
<a href="<? echo $_SERVER['PHP_SELF']; ?>?nav=<?= ($sI-1).$sUrl; ?>">[<?= $sI; ?>]</a>
<?
}
}
?> <?= $sVolgende; ?>
</td>
</tr>
</table>
<br>
<form method="post" action="<?= $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="submit" value="1">
<table align="center" width="50%">
<tr class="kop">
<td align="center" colspan="3">
<b><i>Wist je dat</i> toevoegen</b>
</td>
</tr>
<?
if(isset($_COOKIE['wjd_spam']))
{ // kijken of er een cookie is gezet tegen de spam.
?>
<tr class="inhoud">
<td align="center" colspan="3">
<i>Je mag maar eens in de <?= $c['spam']; ?> seconden een wist-je-datje posten.</i>
</td>
</tr>
<?
}
else
{
?>
<tr class="inhoud">
<td align="right" width="49%">Naam</td>
<td align="center" width="2%">:</td>
<td width="49%"><input type="text" name="naam"></td>
</tr>
<tr class="inhoud">
<td align="right">E-Mail</td>
<td align="center">:</td>
<td><input type="text" name="email"></td>
</tr>
<tr class="inhoud">
<td align="right">Website</td>
<td align="center">:</td>
<td><input type="text" name="website"></td>
</tr>
<tr class="inhoud">
<td align="right">Wist je dat</td>
<td align="center">:</td>
<td><input type="text" name="wjd"></td>
</tr>
<tr class="inhoud">
<td align="center" colspan="3"><input type="submit" value="Toevoegen!"></td>
</tr>
<?
}
?>
</table>
</form>
<center><a href="<?= $_SERVER['PHP_SELF']; ?>?cp=login">Controle Paneel</a></center>
<?
}
?>
</body></html> Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|