Voor een client heb ik een site gemaakt met een aantal formulieren. Nu heeft de client van zijn hostingbedrijf te horen gekregen dat er vanaf zijn site spam verstuurd wordt.

De formulieren moeten dus aangepast worden op de 1 of andere manier.

Heb tutorial doorgelezen http://www.phphulp.nl/php/tutorials/10/340/694/

maar hiervoor heb ik te weinig php kennis om alles goed aan te passen.

Wie kan mij helpen?? Liefst zo spoedig mogelijk, vergoeding in overleg!
lissy schreef op 18.08.2006 10:28
[quote=PHP Newbie schreef op 18.08.2006 10:25][quote=Marthijn Hoiting schreef op 17.08.2006 23:40]Haha de kindjes willen geld bijverdienen, dan moet je toch echt bij de boer gaan werken op het land:D


Als je even terug leest zie je staan in mijn post:

Dit zal niet veel meer dan 5 minuten werk zijn. En kan dus makkelijk voor niks[/quote]

Zet dan hier wat neer in plaats van te blijven zeggen.
Zo help je Roos niet echt en zoals al eerder gezegd stellen wij het niet op prijs om middels PM of mail te gaan helpen.[/quote]

Ik wilde even duidelijk maken dat het niet gaat om even snel geld verdienen.

Problemen:
From: $naam<$email>

De opgegeven naam wordt de afzender, dat gaat niet altijd goed, en hier dus ook niet. Maak hier gewoon een vast adres van. [email protected] o.i.d.

Verder zie ik geen anti-flood, wat betekend dat ik gewoon 1000 e-mails achter elkaar kan zenden.

Met een anti-flood beveiliging maak je na een succesvol verzonden bericht een sessie aan, met de tijd.

Vervolgens kijk je bij de volgende verzending, of dat de sessie bestaat, en of het al langer dan een X aantal seconden geleden is voordat de mail was verzonden.

Als je wil post ik zometeen even een voorbeeldje
Ondertussen ga ik door met het script van Lissy, maar iets gaat er niet goed met de error en succes pagina's. Heb ik gemaakt en in dezelfde map gezet (toch?)

Warning: Cannot modify header information - headers already sent by (output started at / etc. etc.

Dan is het path waar je naar verwijst ok.
De foutmelding wil zeggen dat er al gegevens zijn verzonden alvorens hij deze opdracht zou moeten voltooien en dat mag niet.

Zelf gebruik ik als alles is verstuurd deze:


<?php
// Dit redirect je naar een andere pagina.
	echo "<meta http-equiv='refresh' content='0; url=$Link'>";
?>


bovenaan heb ik $Link benoemd naar waar de bezoeker naar toe moet worden gebracht dus bijv. de homepage en deze is dan: $Link=index.php
Maar goed e.e.a. is afhankelijk van jouw situatie!

Knap hoor dat je doorzet en echt dit gaat draaien vertrouw daar maar op !!!
Oke het formuliertje op zich werkt wel maar wanneer de afzender vergeet om zijn/haar emailadres in te vullen komt er geen waarschuwing maar komt de send.php pagina in beeld met aan het einde de bovengenoemde error...

Bedankt voor je bemoediging Lissy maar ik word er helaas niet vrolijker van want de desbetreffende site kan nog lang niet weer de lucht in en eigenlijk moet ik nog zoveel andere dingen doen......
@ Roos : Zou je nu neer kunnen zetten wat je tot nu hebt gescript?

<form name="roos" method="post" action="send.php">
<table border="0" align="left" cellpadding="1" cellspacing="0" class="klservice">
          
            <tr>
              <td colspan="3"></td>
              </tr>
            
            <tr>
              <td width="102"><strong>Naam:</strong></td>
              <td colspan="2"><input name="naam" type="text" class="formulier" size="30">
                  </td>
            </tr>

            <tr>
              <td><strong>Email:</strong></td>
              <td width="195"><input name="email" type="text" class="formulier" size="30"></td>
              <td width="157">&nbsp;</td>
            </tr>
            <tr>
              <td><strong>Onderwerp:</strong></td>
              <td><input name="onderwerp" type="text" class="formulier" size="10"></td>
              <td>&nbsp;</td></tr>
            <tr>
              <td><strong>Bericht:</strong></td>
              <td><input name="bericht" type="text" class="formulier" size="30"></td>
              <td>&nbsp;</td>
            </tr>
            

            
            <tr>
              <td height="10" colspan="3"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><input name="submit" type="submit" class="formulier" value="Verzenden">
                  <img src="img/spacer.gif" width="30" height="5">
                  <input name="Reset" type="reset" class="formulier" value=" Wissen "></td>
              <td>&nbsp;</td>
            </tr>
            
            <tr>
              <td colspan="3"><br>
                De eerstvolgende nieuwsbrief wordt u zo spoedig mogelijk toegezonden naar het <br>
                opgegeven
e-mailadres.</td>
            </tr>
          
	      </table></form>





<?PHP
error_reporting(7);

function check_string($value, $low, $high, $mode, $optional)
{
 if ( (strlen($value) == 0) && ($optional === true) )
 {
  return true;
 } 
 elseif ( (strlen($value) >= $low) && ($mode == 1) )
 {
  return true;
 } 
 elseif ( (strlen($value) <= $high) && ($mode == 2) )
 {
  return true;
 } 
 elseif ( (strlen($value) >= $low) && (strlen($value) <= $high) && ($mode == 3) )
 {
  return true;
 } else {
  return false;
 }
}

function check_email($email, $optional)
{
 if ( (strlen($email) == 0) && ($optional === true) ) 
 {
  return true;
 } elseif ( eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email) )
 {
  return true;
 } 
 else 
 {
  return false;
 }
}

$FTGnaam = $_POST['naam'];
$FTGemail = $_POST['email'];
$FTGonderwerp = $_POST['onderwerp'];
$FTGbericht = $_POST['bericht'];

$validationFailed = false;

if ( (! check_string($FTGnaam, 1, 0, 1, false)))
{
 $validationFailed = true;
}

if ( (! check_email($FTGemail, false)))
{
 $validationFailed = true;
}

if ( (! check_string($FTGbericht, 1, 0, 1, false)))
{
 $validationFailed = true;
}

if ($validationFailed == true)
{
//Verander
 header("Location: error.html");
 exit;
}

//Verander hieronder jouwn naam en email, en het onderwerp van de email

$emailTo = '"Roos" <[email protected]>';
 
$emailSubject = "Contact opgenomen via website";

//Klaar
$emailBody = "naam: $FTGnaam\n"
 . "email: $FTGemail\n"
 . "onderwerp: $FTGonderwerp\n"
 . "bericht: $FTGbericht\n"
 . "\n"
 . "";

$emailHeader = "From: [email protected]\n" // dit staat als afzender in mijn postvak 
 . "Reply-To: [email protected]\n"
 . "MIME-Version: 1.0\n"
 . "Content-type: text/plain; charset=\"ISO-8859-1\"\n"
 . "Content-transfer-encoding: quoted-printable\n";

mail($emailTo, $emailSubject, $emailBody, $emailHeader);

//Verander  
header("Location: succes.html");
exit;

?> 



En als voorbeeld: error.html


<html>
<head>
<title>error</title>
</head>

<body>

Dit gaat niet goed errorpagina
</body>
</html>


De foutmelding komt omdat dit ook pas op het laatst wordt gecheckt wanneer ik er vanuit ga dat alles op 1 pagina staat die je send.php noemt.

Wanneer ik je goed begrijp wens je nadat iemand het formulier al dan niet volledig heeft ingevuld het form weer terug krijgt met al dan niet hetgeen ingevuld wat hij heeft gedaan en nog wat hij niet heeft gedaan daarvoor de foutmelding?
Tot nu toe gebruik ik een pagina (html) voor het formulier op zich vervolgens een send.php om te waarschuwen wanneer een veld niet correct (mailadres) of volledig is ingevuld.
Bij het versturen van het bericht ziet de bezoeker op de site zelf een melding dat het bericht is verzonden en ontvangt in zijn mailbox daarvan een bevestiging.

Wat betreft de site op zich: na het versturen ziet de bezoeker de melding dat de mail is verzonden en kan daarna weer verder navigeren op de pagina.

Heb ook nog even het eerste opzetje van je geprobeerd maar krijg dan niet de melding in beeld
: $msg = '<p style="color: black;">De mail is verzonden</p>';

Hoe dat dan weer kan??

Ik ga nu nog 'even' proberen om alles op 1 pagina te zetten.......?

Reageren