gastenboek vraag

Status
Niet open voor verdere reacties.

marcelklip

Terugkerende gebruiker
Lid geworden
2 jan 2005
Berichten
1.010
hallo

ik weet niet waar ik moet beginnen maar ik zou graag het volgende willen met de onderstaande script.

- Als iemand een bericht stuurt dat er een email gaat naar 112hoogezand@home.nl met een melding dat er een bericht is geplaatst.

- en ik zou er graag een spam beveiliging in willen hebben.

zou iemand me kunnen helpen.



PHP:
schrijf.php
PHP:
<?php 
$datum = date("d-m-Y / H:i"); 
$a=$_GET['a'];
if($a=='s'){
$naam=$_POST['naam'];
$email=$_POST['email'];
$bericht=$_POST['bericht'];
$bestand = fopen("gastenboek.txt", "a"); 
$bericht = str_replace("\n","<br>",$bericht); 
//smileys
$bericht = str_replace(":D","<img src='D.jpg'>",$bericht); 
$bericht = str_replace(":d","<img src='D.jpg'>",$bericht); 
$bericht = str_replace(":)","<img src='happy.jpg'>",$bericht); 
$bericht = str_replace(":(","<img src='sad.jpg'>",$bericht); 
$bericht = str_replace(":P","<img src='lol.jpg'>",$bericht); 
$bericht = str_replace(":p","<img src='lol.jpg'>",$bericht); 
//einde smilies
$bericht = str_replace("|","",$bericht); 
$naam = str_replace("|","",$naam); 
$email = str_replace("|","",$email); 
fwrite($bestand, "$naam|$email|$datum|$REMOTE_ADDR|$bericht\n"); 
fclose($bestand); 
echo"Bedankt!<br><br><a href=gastenboek.php>Gastenboek</a>"; 
} else { 
echo"<form method=post action=schrijf.php?a=s>"; 
echo"Naam:<br><input type=text name=naam><br>"; 
echo"Email:<br><input type=text name=email><br>"; 
$value=$_GET['bericht'];
$smile=$_GET['smile'];
$value=$value.$smile;
?>
<BR>

<BR>
<script>
function smileD()
{    
document.getElementById('bericht').value=document.getElementById('bericht').value + ":D"
}
</script>
<script>
function happy()
{    
document.getElementById('bericht').value=document.getElementById('bericht').value + ":)"
}
</script>
<script>
function sad()
{    
document.getElementById('bericht').value=document.getElementById('bericht').value + ":("
}
</script>
<script>
function lol()
{    
document.getElementById('bericht').value=document.getElementById('bericht').value + ":P"
}
</script>
<a href="javascript:smileD()"></a>
<a href="javascript:happy()"></a><a href="javascript:sad()"></a><a href="javascript:lol()"></a>
<?
echo"Bericht:<br><textarea cols=25 rows=10 name=bericht id=bericht>$value</textarea><br>"; 
echo"<input type=submit value='Verstuur'>"; 
echo"</form>"; 
} 
?>
&nbsp;




PHP:
gastenboek.php

PHP:
<?php 

$aBestand = file('gastenboek.txt'); 
if($aBestand) { 
    $aBestand = array_reverse($aBestand); 
    foreach($aBestand as $sBericht) { 
        $aBericht = explode('|',$sBericht); 
        echo '<b>Bericht door: <a href="mailto:'.$aBericht[1].'">'.$aBericht[0].'</a></b>'; 
        echo '<br>'.$aBericht[4].'<br><br><hr><br>'; 
    } 
} else { 
    echo 'Er zijn nog geen berichten.'; 
} 
?>
 
Voor het mailen heb ik even wat uit een andere thread gehaald.

schrijf.php
PHP:
<?php
//Email instellingen, aanpassen naar wens:
$mailTo = "112hoogezand@home.nl";
$mailTitle = "Nieuw bericht in gastenboek";
$mailContent = "{naam} heeft een bericht achtergelaten in het gastenboek\n\nDit is het bericht:\n----------------------------\n\n{bericht}\n\n-----Dit is een automatisch verstuurd bericht-----";
//Einde instellingen
$datum = date("d-m-Y / H:i");
$a=$_GET['a'];
if($a=='s'){
  $naam=$_POST['naam'];
  $email=$_POST['email'];
  $bericht=$_POST['bericht'];
  $bestand = fopen("gastenboek.txt", "a");
  $bericht = str_replace("\n","<br>",$bericht);
  //Bericht zonder verwerkte smilies opslaan voor het mailen
  $mailBericht = $bericht;
  //smileys
  $bericht = str_replace(":D","<img src='D.jpg'>",$bericht);
  $bericht = str_replace(":d","<img src='D.jpg'>",$bericht);
  $bericht = str_replace(":)","<img src='happy.jpg'>",$bericht);
  $bericht = str_replace(":(","<img src='sad.jpg'>",$bericht);
  $bericht = str_replace(":P","<img src='lol.jpg'>",$bericht);
  $bericht = str_replace(":p","<img src='lol.jpg'>",$bericht);
  //einde smilies
  $bericht = str_replace("|","",$bericht);
  $naam = str_replace("|","",$naam);
  $email = str_replace("|","",$email);
  fwrite($bestand, "$naam|$email|$datum|$REMOTE_ADDR|$bericht\n");
  fclose($bestand);
  //Mail gedeelte
  $mailContent = str_replace("{naam}", $naam, $mailContent);
  $mailContent = str_replace("{bericht}", $mailBericht, $mailContent);
  mail($mailTo,$mailTitle,$mailContent,"From: $email\n");
  //Einde mailen
  echo"Bedankt!<br><br><a href=gastenboek.php>Gastenboek</a>";
} else {
  echo '<form method="post" action="schrijf.php?a=s">
  Naam:<br /><input type="text" name="naam"><br />
  Email:<br /><input type="text" name="email"><br />';
  $value=$_GET['bericht'];
  $smile=$_GET['smile'];
  $value=$value.$smile;
?>
<br />
<br />
<script>
function smilie(token){    
  document.getElementById('bericht').value=document.getElementById('bericht').value + token
}
</script>

<a href="javascript:smilie(':D')"></a>
<a href="javascript:smilie(':)')"></a>
<a href="javascript:smilie(':(')"></a>
<a href="javascript:smilie(':P')"></a>
<?
  echo 'Bericht:<br />
  <textarea cols="25" rows="10" name="bericht"id="bericht">'. $value .'</textarea>
  <br />
  <input type="submit" value="Verstuur">
  </form>';
}
?>
Ik heb het javascript voor de functies ook gewijzigd. Het is makkelijker om gewoon 1 functie te maken en dan gewoon een parameter mee te geven bij het aanroepen van die functie. Ik heb hem niet getest maar volgens mij moet hij gewoon nog werken nu.

Ook heb ik wat dubbele quotes gewijzigd in single.

Persoonlijk zou ik ook het converteren van de smilies bij het opvragen van de berichten doen maar zo kan het ook prima.

Voor de spambeveiliging kun je het archief wel even nazoeken op captcha er zijn genoeg threads over.
 
Laatst bewerkt:
hartstikke bedankt ik zal even kijken als ik een goede topic over captcha kan vinden
 
hallo

zijn er nog andere manieren dan Captcha.
ik zie soms ook dat mensen een vinkje ergens moeten plaatsen. omtebewijzen dat ze een mens zijn
wat is de code van wat ik bedoel
 
Bedoel je de code om met zo'n vinkje te werken?

schrijf.php
PHP:
<?php
//Email instellingen, aanpassen naar wens:
$mailTo = "112hoogezand@home.nl";
$mailTitle = "Nieuw bericht in gastenboek";
$mailContent = "{naam} heeft een bericht achtergelaten in het gastenboek\n\nDit is het bericht:\n----------------------------\n\n{bericht}\n\n-----Dit is een automatisch verstuurd bericht-----";
//Einde instellingen
$datum = date("d-m-Y / H:i");
$a=$_GET['a'];
if($a=='s'){
  if(isset($_POST['bloemkool'])) {
    $naam=$_POST['naam'];
    $email=$_POST['email'];
    $bericht=$_POST['bericht'];
    $bestand = fopen("gastenboek.txt", "a");
    $bericht = str_replace("\n","<br>",$bericht);
    //Bericht zonder verwerkte smilies opslaan voor het mailen
    $mailBericht = $bericht;
    //smileys
    $bericht = str_replace(":D","<img src='D.jpg'>",$bericht);
    $bericht = str_replace(":d","<img src='D.jpg'>",$bericht);
    $bericht = str_replace(":)","<img src='happy.jpg'>",$bericht);
    $bericht = str_replace(":(","<img src='sad.jpg'>",$bericht);
    $bericht = str_replace(":P","<img src='lol.jpg'>",$bericht);
    $bericht = str_replace(":p","<img src='lol.jpg'>",$bericht);
    //einde smilies
    $bericht = str_replace("|","",$bericht);
    $naam = str_replace("|","",$naam);
    $email = str_replace("|","",$email);
    fwrite($bestand, "$naam|$email|$datum|$REMOTE_ADDR|$bericht\n");
    fclose($bestand);
    //Mail gedeelte
    $mailContent = str_replace("{naam}", $naam, $mailContent);
    $mailContent = str_replace("{bericht}", $mailBericht, $mailContent);
    mail($mailTo,$mailTitle,$mailContent,"From: $email\n");
    //Einde mailen
    echo'Bedankt!<br /><br /><a href="gastenboek.php">Gastenboek</a>';
  } else {
    $error = "Het is verplicht om een vinkje te zetten bij de spampreventie";
  }
} else {
  if(isset($error)) {
    echo $error;
  }
  echo '<form method="post" action="schrijf.php?a=s">
  Naam:<br /><input type="text" name="naam"><br />
  Email:<br /><input type="text" name="email"><br />';
  $value=$_GET['bericht'];
  $smile=$_GET['smile'];
  $value=$value.$smile;
?>
<br />
<br />
<script>
function smilie(token){    
  document.getElementById('bericht').value=document.getElementById('bericht').value + token
}
</script>

<a href="javascript:smilie(':D')"></a>
<a href="javascript:smilie(':)')"></a>
<a href="javascript:smilie(':(')"></a>
<a href="javascript:smilie(':P')"></a>
<?
  echo 'Bericht:<br />
  <textarea cols="25" rows="10" name="bericht"id="bericht">'. $value .'</textarea>
  <br />
  Spampreventie: <input type="checkbox" name="bloemkool" value="bloemkool" /> (Vink aan) <br />
  <input type="submit" value="Verstuur">
  </form>';
}
?>

Zo moet het volgens mij werken. (Ik neem aan dat het mailen ook werkte)
 
als je het vinkje weg laat dan geeft hij geen foutmelding

PHP:
   echo'Bedankt!<br /><br /><a href="gastenboek.php">Gastenboek</a>'; 
  } else { 
    $error = "Het is verplicht om een vinkje te zetten bij de spampreventie";

die error gedeelte werkt niet
 
Maar hij voegt het bericht niet toe?

Het komt waarschijnlijk omdat ik verwacht had dat je het formulier nog weer zou geven, dit gebeurt dus niet.

Probeer deze eens:
PHP:
<?php
//Email instellingen, aanpassen naar wens:
$mailTo = "112hoogezand@home.nl";
$mailTitle = "Nieuw bericht in gastenboek";
$mailContent = "{naam} heeft een bericht achtergelaten in het gastenboek\n\nDit is het bericht:\n----------------------------\n\n{bericht}\n\n-----Dit is een automatisch verstuurd bericht-----";
//Einde instellingen
$datum = date("d-m-Y / H:i");
$a=$_GET['a'];
if($a=='s'){
  if(isset($_POST['bloemkool'])) {
    $naam=$_POST['naam'];
    $email=$_POST['email'];
    $bericht=$_POST['bericht'];
    $bestand = fopen("gastenboek.txt", "a");
    $bericht = str_replace("\n","<br>",$bericht);
    //Bericht zonder verwerkte smilies opslaan voor het mailen
    $mailBericht = $bericht;
    //smileys
    $bericht = str_replace(":D","<img src='D.jpg'>",$bericht);
    $bericht = str_replace(":d","<img src='D.jpg'>",$bericht);
    $bericht = str_replace(":)","<img src='happy.jpg'>",$bericht);
    $bericht = str_replace(":(","<img src='sad.jpg'>",$bericht);
    $bericht = str_replace(":P","<img src='lol.jpg'>",$bericht);
    $bericht = str_replace(":p","<img src='lol.jpg'>",$bericht);
    //einde smilies
    $bericht = str_replace("|","",$bericht);
    $naam = str_replace("|","",$naam);
    $email = str_replace("|","",$email);
    fwrite($bestand, "$naam|$email|$datum|$REMOTE_ADDR|$bericht\n");
    fclose($bestand);
    //Mail gedeelte
    $mailContent = str_replace("{naam}", $naam, $mailContent);
    $mailContent = str_replace("{bericht}", $mailBericht, $mailContent);
    mail($mailTo,$mailTitle,$mailContent,"From: $email\n");
    //Einde mailen
    echo'Bedankt!<br /><br /><a href="gastenboek.php">Gastenboek</a>';
  } else {
    echo 'Het is verplicht om een vinkje te zetten bij de spampreventie, klik <a href="history.go(-1)">hier</a> om terug te keren naar het formulier';
  }
} else {
  echo '<form method="post" action="schrijf.php?a=s">
  Naam:<br /><input type="text" name="naam"><br />
  Email:<br /><input type="text" name="email"><br />';
  $value=$_GET['bericht'];
  $smile=$_GET['smile'];
  $value=$value.$smile;
?>
<br />
<br />
<script>
function smilie(token){    
  document.getElementById('bericht').value=document.getElementById('bericht').value + token
}
</script>

<a href="javascript:smilie(':D')"></a>
<a href="javascript:smilie(':)')"></a>
<a href="javascript:smilie(':(')"></a>
<a href="javascript:smilie(':P')"></a>
<?
  echo 'Bericht:<br />
  <textarea cols="25" rows="10" name="bericht"id="bericht">'. $value .'</textarea>
  <br />
  Spampreventie: <input type="checkbox" name="bloemkool" value="bloemkool" /> (Vink aan) <br />
  <input type="submit" value="Verstuur">
  </form>';
}
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan