Nieuwsbrief php

  • Onderwerp starter Onderwerp starter Verwijderd lid 141197
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
V

Verwijderd lid 141197

Hoi beste helpmij'ers:)

ik heb een probleem:(en ik weet niet waar de fout zit:confused:

ik heb een mail script ge test maar je kan in het zelfde script aanmelden en afmelden:(
en ik wil graag dat dat 2 script worden:)
maar ik heb me tot nu toe alleen bezig gehouden met aanmelden

Het script voor aan en afmelden:
PHP:
<?php

//----------------------------------------
// Verander de gegevens hieronder:

$JouwWebsiteNaam = "(verwijderd) de Dennenhorst";
// Jouw website naam
$JouwEmail = "*****@gmail.com";
// Jouw e-mail adres
$DataBestand = "nieuwsbrief_data.dat";
// De locatie van het databestand
$DitBestand = "http://www.******.eu/t/index.php";
// De url van dit bestand


// Hierna hoef je niks meer te veranderen!
//----------------------------------------

// Begin functie om het e-mail adres te controleren 
function ControleerEmail($a) {  
return ereg("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",$a);  
}  
// Einde functie om het e-mail adres te controleren

$NieuwsbriefData = file($DataBestand);

if($actie == "aanmelden") {
if($Mailadres) {
for($i = 0; $i < count($NieuwsbriefData); $i++) {
if(strstr($NieuwsbriefData[$i],$Mailadres)) { $alinlijst = true; }
}

if($alinlijst) { echo("<b>Het e-mail adres staat al in de lijst!</b><br><br>"); }
elseif(!ControleerEmail($Mailadres)) { echo("<b>Het e-mail adres is ongeldig!</b><br><br>"); }
else {
$NieuwsbriefB = fopen($DataBestand,"a");
fputs($NieuwsbriefB,"$Mailadres\r\n");
fclose($NieuwsbriefB);
mail("<$Mailadres>","Aanmelding Nieuwsbrief $JouwWebsiteNaam","Beste eigenaar van $Mailadres,\n\nU of iemand anders heeft dit e-mail adres\naangemeld bij de Nieuwsbrief van $JouwWebsiteNaam.\nWilt u dit ongedaan maken, dan kan dit op\n$DitBestand.\n\n$JouwWebsiteNaam","From: $JouwWebsiteNaam <$JouwEmail>");
echo("<b>Het e-mail adres is succesvol aangemeld!</b><br><br>
<br><br>
");
}

}

else { echo("<b>Je hebt geen e-mail adres ingevuld!</b><br><br>"); }

}

elseif($actie == "afmelden") {
if($Mailadres) {
$NieuwsbriefB = fopen($DataBestand,"w");
for($i = 0; $i < count($NieuwsbriefData); $i++) {
if(!strstr($NieuwsbriefData[$i],$Mailadres)) { fputs($NieuwsbriefB,$NieuwsbriefData[$i]); }
else { $gelukt = true; }
}
fclose($NieuwsbriefB);
if($gelukt) {
mail("<$Mailadres>","Afmelding Nieuwsbrief $JouwWebsiteNaam","Beste eigenaar van $Mailadres,\n\nU of iemand anders heeft dit e-mail adres\nafgemeld bij de Nieuwsbrief van $JouwWebsiteNaam.\nWilt u dit ongedaan maken, dan kan dit op\n$DitBestand.\n\n$JouwWebsiteNaam","From: $JouwWebsiteNaam <$JouwEmail>");
echo("<b>Het e-mail is succesvol afgemeld!</b><br><br>");
}
else {
echo("<b>Het e-mail is niet gevonden!<br>Probeer het opnieuw.</b><br><br>");
}

}

else { echo("<b>Je hebt geen e-mail adres ingevuld!</b><br><br>"); }

}

?>
<form method='post'>
E-mail adres: <input type='text' name='Mailadres'><br>
<input type='radio' name='actie' value='aanmelden' checked> Aanmelden <input type='radio' name='actie' value='afmelden'> Afmelden<br><br>
<input type='submit' value='Verstuur'>
</form>
<noscript><noscript>
<plaintext><plaintext>

mijn form:
HTML:
<form method="post">
</td>
  </tr>
  <tr>
     <td width="146">Aanmelden voor de Nieuwsbrief</td>
     </tr>
    <tr><td>Email-adres:</td>
      </tr>
  <tr>
    <td><input name='Mailadres' type='text' class="text_box"></td>
    </tr>
  <tr>
    <td><input type='submit' value='Verstuur'><input type="reset" value="Reset"></td>
  </tr>
  
  </table></form>

hoe kan ik dit splitsen in een form voor aanmelden en eentje voor afmelden?

Alvast bedankt:thumb:
 
ik heb het zelf nu zo gesplitst:
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//----------------------------------------
// Verander de gegevens hieronder:

$JouwWebsiteNaam = "(verwijderd) de Dennenhorst";
// Jouw website naam
$JouwEmail = "(verwijderd)";
// Jouw e-mail adres
$DataBestand = "nieuwsbrief_data.dat";
// De locatie van het databestand
$DitBestand = "http://www.(verwijderd).eu/t/index.php";
// De url van dit bestand


// Hierna hoef je niks meer te veranderen!
//----------------------------------------

// Begin functie om het e-mail adres te controleren 
function ControleerEmail($a) {  
return ereg("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",$a);  
}  
// Einde functie om het e-mail adres te controleren

$NieuwsbriefData = file($DataBestand);

if($Mailadres) {
for($i = 0; $i < count($NieuwsbriefData); $i++) {
if(strstr($NieuwsbriefData[$i],$Mailadres)) { $alinlijst = true; }
}

if($alinlijst) { echo("<b>Het e-mail adres staat al in de lijst!</b><br><br>"); }
elseif(!ControleerEmail($Mailadres)) { echo("<b>Het e-mail adres is ongeldig!</b><br><br>"); }
else {
$NieuwsbriefB = fopen($DataBestand,"a");
fputs($NieuwsbriefB,"$Mailadres\r\n");
fclose($NieuwsbriefB);
mail("<$Mailadres>","Aanmelding Nieuwsbrief $JouwWebsiteNaam","Beste eigenaar van $Mailadres,\n\nU of iemand anders heeft dit e-mail adres\naangemeld bij de Nieuwsbrief van $JouwWebsiteNaam.\nWilt u dit ongedaan maken, dan kan dit op\n$DitBestand.\n\n$JouwWebsiteNaam","From: $JouwWebsiteNaam <$JouwEmail>");
echo("<b>Het e-mail adres is succesvol aangemeld!</b><br><br>
<br><br>
");
}

}

else { echo("<b>Je hebt geen e-mail adres ingevuld!</b><br><br>"); }
}
?>
maar werkt niet
 
Laatst bewerkt door een moderator:
heb iets gemaakt maar het werkt niet helemaal ik krijg error onverwacht echo
PHP:
<?php
//Variebalen defieneren
$email = $_POST[email];
//Checken of alles goed is ingevuld
if (!$email	{
echo "U heeft geen en/of een ongeldig e-mailadres ingevuld"
}
else	{
//E-mail adres aan de lijst toevoegen
$niewsbrief = fopen ("nieuwsbrief.txt","a");
fwrite($nieuwsbrief,$email);
fclose($nieuwsbrief);
//mailtje sturen
mail("$email","Aanmelding nieuwsbrief (verwijderd) de Dennenhorst","blabla teskt die je ontvangt")
echo "Het e-mailadres is succes vol aangemeld."
}
?>
 
Regel 5 haakje vergeten
Regel 6+14+15, punt-komma vergeten aan het eind
 
hij leest het script al voor dat je op verstuur hebt geklikt:(
wat valt daar aan te doen?:confused:
 
PHP:
if($_SERVER['REQUEST_METHOD'] == 'POST') {
 // Je code welke moet worden uitgevoerd wanneer het formulier wordt verzonden
} else {
 // De HTML-code voor je formulier met als action niets
}
 
dus
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
//Variebalen defieneren
$email = $_POST[email];
//Checken of alles goed is ingevuld
if (!$email) {
echo "U heeft geen en/of een ongeldig e-mailadres ingevuld";
}
else    {
//E-mail adres aan de lijst toevoegen
$niewsbrief = fopen ("nieuwsbrief.txt","a");
fwrite($nieuwsbrief,$email);
fclose($nieuwsbrief);
//mailtje sturen
mail("$email","Aanmelding nieuwsbrief (verwijderd) de Dennenhorst","blabla teskt die je ontvangt");
echo "Het e-mailadres is succes vol aangemeld.";
}
}
else {<form method="post">
</td>
  </tr>
  <tr>
     <td width="146">Aanmelden voor de Nieuwsbrief</td>
     </tr>
    <tr><td>Email-adres:</td>
      </tr>
  <tr>
    <td><input name='email' type='text' class="text_box"></td>
    </tr>
  <tr>
    <td><input type='submit' value='Verstuur'><input type="reset" value="Reset"></td>
  </tr>
  
  </table></form>}
?>
}
 
Wel PHP afsluiten wanneer je over gaat naar HTML

Dus:
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
  //Variabelen defineren
  $email = $_POST[email];
  //Checken of alles goed is ingevuld
  if (!$email) {
    echo "U heeft geen en/of een ongeldig e-mailadres ingevuld";
  } else {
    //E-mail adres aan de lijst toevoegen
    $niewsbrief = fopen ("nieuwsbrief.txt","a");
    fwrite($nieuwsbrief,$email);
    fclose($nieuwsbrief);
    //mailtje sturen
    mail("$email","Aanmelding nieuwsbrief (verwijderd) de Dennenhorst","blabla teskt die je ontvangt");
    echo "Het e-mailadres is succes vol aangemeld.";
  }
} else {
?>
<form method="post">
</td>
  </tr>
  <tr>
     <td width="146">Aanmelden voor de Nieuwsbrief</td>
     </tr>
    <tr><td>Email-adres:</td>
      </tr>
  <tr>
    <td><input name='email' type='text' class="text_box"></td>
    </tr>
  <tr>
    <td><input type='submit' value='Verstuur'><input type="reset" value="Reset"></td>
  </tr>
  
  </table></form>
<?php 
}
?>
 
Warning: fwrite(): supplied argument is not a valid stream resource in /www/htdocs/(verwijderd)/t/index.php on line 128

Warning: fclose(): supplied argument is not a valid stream resource in /www/htdocs/(verwijderd)/t/index.php on line 129

maar hij zegt toch dat het is gelukt hoe kan ik dit voorkomen?
fwrite($nieuwsbrief,$email);
fclose($nieuwsbrief);
 
Laatst bewerkt door een moderator:
Kun je voorkomen door de juiste variabele naam te maken ;)

Je had een typfoutje gemaakt op regel 10 :)

Als je die aanpast naar nieuws dan moet het goed gaan.
 
Kijk even naar de variabele-namen:
PHP:
  $niewsbrief = fopen ("nieuwsbrief.txt","a");
    fwrite($nieuwsbrief,$email);
    fclose($nieuwsbrief);
De eerste is "niewsbrief" daarna roep je "nieuwsbrief" aan :)
 
heel veel dank!

hoe zie jij dat zo snel? ervarings deskundige?

hij plakt nu de email adressen die gegeven worden aan elkaar:confused:
ik wil ze gescheiden met ; of , zodat je het in een keer in een aan vak kan copy paste:D
 
Laatst bewerkt door een moderator:
Nou ja, snel zien.

Het is een kwestie van de foutmelding lezen, gecombineerd met ervaring weet je dan waar je ongeveer naar moet kijken :)

Als je het gescheiden wilt met een ; moet je dit doen

PHP:
fwrite($nieuwsbrief,$email .';');
 
is er een mogelijkheid dat niet iedereen die txt kan zien/openen?:confused:
 
Dan zou je hem niet als .txt op moeten slaan.
Als je hem als PHP-bestand opslaat moet dat volgens mij makkelijk kunnen.

Maak de eerste twee regels zo:
PHP:
<?php
/*
Dan wordt alles wat daarna komt als commentaar gezien en is niet te zien voor een normale gebruiker.

Je kunt ook de map waarin hij staat (desnoods zet je hem in een nieuwe map) beveiligen via een wachtwoord. Dat kun je vast wel via je host regelen.
 
ik had ergens gevonden dat ik een regel in mij .htcacces zou moeten toevoegen
 
maar dit werkt all bedankt!

nog een vraagje:o

mijn site nu:http://www.(verwijderd).eu/t/index.php
maar als je je inschrijft zegt hij alles goed enz maar dat is net onder het midden dus als hij dat zegt zie je het pas als je naar beneden scrolt kan deze tekst en waar die nu staat en boven het groene blok komen? en dat je niet al die fout meldingen te zien krijgt maar als het fout is gegaan dat er eens fout is opgetreden enz.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan