Design-web.nl forum


Lessen, tutorials en scripts in html, css, javascript, php en mysql.  

All times are UTC + 1 hour




Post new topic Reply to topic  [ 5 posts ] 
Author Message
 Post subject: Mailinglijst met beveiliging van een inlogscript.
PostPosted: Tue Jun 29, 2010 9:04 am 
Offline
Newbe

Joined: Fri Mar 26, 2010 11:51 am
Posts: 5
Ik heb een mailinglijst script gemaakt en een inlog script, onafhankelijk werken ze goed. Maar beide willen maar niet met elkaar samen werken, een simpel include met echo je hebt toegang. Zou toch moeten werken. Ik heb al van alles geprobeerd, maar zonder het gewenste resultaat.

Ik hoop dat er iemand is in het forum die een idee heeft? Ergens zie ik iets over het hoofd.

Met vriendelijke groet,
eric :)

p.s. Ik gebruik xampp server 1.7.3. Met PHP versie 5.3.1.

autoid2.php

<?php
session_start(); // Start de sessie
// Maak de functie controle met de variabele naam en wachtwoord.
function controle($email, $wachtwoord)
{
if ($email != "eric@top.nl" || $wachtwoord != md5("pas100"))
{
return false;
}
else
{
return true;
}
}
function valid_mail ($str) //functie controleer string mail
{
return (preg_match('#^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$#i',$str));
}

// Controleer naam en wachtwoord
if (isset($_POST["verzonden"]) && controle($_POST["email"], md5($_POST["wachtwoord"]))==true)
{
// OK
$_SESSION['email'] = $email;
$_SESSION['wachtwoord'] = md5($wachtwoord);

}

if (!controle($_SESSION['email'], $_SESSION['wachtwoord']) || !valid_mail($_POST["email"])==false)
{
//niet OK
echo "<form method=\"post\" action=\"$PHP_SELF\">\n";
if ($_POST["verzonden"] && !valid_mail($_POST["email"]))
{
echo "<font color=\"red\">Vul hier uw E-mailadres correct in!</font><br>";
}
echo "E-mail adres :&nbsp; ";
echo "<input type=\"text\" name=\"email\">";
echo "<br>";
echo "Wachtwoord : ";
echo "<input type=\"password\" name=\"wachtwoord\">";
echo "<br>";
echo "<input type=\"submit\" value=\"verzenden\" name=\"verzonden\">";
echo "</form>";
exit;
}
?>

mailingin.php

<?php
include_once "autoid2.php";
echo "Je, hebt toegang!";
?>
<html>
<head>
<title>Mail versturen aan de lijst</title>
</head>
<body>
<?php
ini_set("SMTP", "smtp.nobodyprovider.nl");
ini_set("smtp_port", 25);
ini_set ("sendmail_from", "no@nobodyprovider.nl");

if ($_POST["verzendbutton"] != "verzenden" || !$_POST["tekst"])
{
echo "<h1>Een mail versturen aan de lijst</h1>";

echo "<form action=\"$PHP_SELF\" method=\"post\">";

if ($_POST["verzendbutton"] && !$_POST["onderwerp"])
{
echo "<font color=\"red\">Vul hier een onderwerp in!</font>";
}
?>
Onderwerp: <input type="text" name="onderwerp" value="<?php echo $_POST["onderwerp"] ?>"><br>
<?php
if ($_POST["verzendbutton"] && !$_POST["tekst"])
{
echo "<font color=\"red\">Voer een tekst in</font>";
}
?>
<textarea name="tekst" cols=35 rows=10></textarea><br>
<input type="submit" value="verzenden" name="verzendbutton">
</form>
<?php
}
else
{
$bestandsnaam = "mailadressen.txt";
$adressen = file($bestandsnaam); // Sla bestand op in array

$afzender = "no@nobodyprovider.nl";

$aantal_adressen = count($adressen);
for ($nr=0; $nr < $aantal_adressen; $nr++) {
mail($adressen[$nr], $_POST["onderwerp"], $_POST["tekst"], "from: $afzender");
}
echo "Uw mail met onderwerp ".$_POST["onderwerp"]." en tekst ".$_POST["tekst"]." is verzonden <br>";
echo "<a href=logout.php>Uitloggen</a>";
}

?>
<a href="logout.php">Uitloggen</a>
</body>
</html>


Top
 Profile  
 
 Post subject: Re: Mailinglijst met beveiliging van een inlogscript.
PostPosted: Sat Jul 03, 2010 11:07 pm 
Offline
Diamond Member
User avatar

Joined: Mon Oct 06, 2003 12:36 pm
Posts: 1373
Location: België
Er zijn nog wat dingen die zouden oeten aangepast worden. Maar in het kort:
In mailingin.php, verander bovenaan:
Code:
include_once "autoid2.php";
echo "Je, hebt toegang!";

naar
Code:
session_start();
if (!isset($_SESSION['email']) {
    header('Location: autoid2.php'); exit; // stuur de user naar de login pagina als hij nog niet is ingelogd
}


en dan in autoid2.php verander
Code:
// Controleer naam en wachtwoord
if (isset($_POST["verzonden"]) && controle($_POST["email"], md5($_POST["wachtwoord"]))==true)
{
// OK
$_SESSION['email'] = $email;
$_SESSION['wachtwoord'] = md5($wachtwoord);

}

naar
Code:
// Controleer naam en wachtwoord
if (isset($_POST["verzonden"]) && controle($_POST["email"], md5($_POST["wachtwoord"]))==true)
{
// OK
$_SESSION['email'] = $email;
$_SESSION['wachtwoord'] = md5($wachtwoord);
header('Location: mailingin.php'); exit;
}


Eerst stuur je de user naar de inlog pagina. Wanneer hij juist inlogd, gaat hij automatisch naar de mailinglist. Als iemand op de mailinglist komt zonder ingelogd te zijn, gaat hij vanzelf naar de loginpagina.

Zorg aleen dat de twee php bestanden in dezelfde map staan.

Succes


Top
 Profile  
 
 Post subject: Re: Mailinglijst met beveiliging van een inlogscript.
PostPosted: Mon Jul 05, 2010 2:12 pm 
Offline
Newbe

Joined: Fri Mar 26, 2010 11:51 am
Posts: 5
Hallo,

Bedankt voor je reactie! Ik heb de wijzigingen aangebracht zoals aangegeven.

autoid2.php stuurt de user na correcte inloggegevens nu naar mailingin.php tot zover gaat het goed. Alleen bij mailingin.php schakelt ie weer terug naar autoid2.php. De if statement werkt niet helemaal goed, al voer je de correcte inloggevens in.

Ik heb de volgende dingen onderzocht:

Ik heb met var_dump gekeken of de super global $_SESSION de array gegevens wel juist doorgeeft, geen probleem tot zover.

Ik heb het if (conditie) verder uitgeplozen.

Code:


session_start
();
if (!isset($_SESSION['email'])) {
header('Location: autoid2.php'); exit; // stuur de user naar de login pagina als hij nog niet is ingelogd
}

 


! Is waar als het enkelvoudig argument(rechts) onwaar is en onwaar als dat argument waar is.
isset Neemt een array[key] en retourneert true als het sleutelgedeelte een geldige sleutel voor de array is.
$_SESSION['email'] klopt ook zit in de array.

Mischien ligt het aan mijn installatie van XAMPP server 1.7.3. Met PHP versie 5.3.1.
Ik ben nog een beginner met PHP

Zou jij het willen testen of het bij jou wel goed werkt?

Met vriendelijke groeten,

Eric :D


Top
 Profile  
 
 Post subject: Re: Mailinglijst met beveiliging van een inlogscript.
PostPosted: Mon Jul 05, 2010 3:38 pm 
Offline
Newbe

Joined: Fri Mar 26, 2010 11:51 am
Posts: 5
Hallo Clear,

Ik heb het gevonden met print_r de $_SESSION array met email is leeg, dus kon hij niet anders dan dat hij steeds naar autoid2.php ging. Hij gaf wel het wachtwoord goed door met md5. Dus email in wachtwoord veranderd en werken als een speer.

Code:

session_start
();
if (!isset($_SESSION['wachtwoord'])) {
header('Location: autoid2.php'); exit; // stuur de user naar de login pagina als hij nog niet is ingelogd
}
 


Er is dus niks met het if (conditie) aan de hand, werkt gewoon goed.
Fout zit in autoid2.php hij zet de string van email niet in de $_SESSION['email'] array.

Heel hartelijk bedankt voor de hulp,

Met vriendelijke groeten,

Eric :D


Top
 Profile  
 
 Post subject: Re: Mailinglijst met beveiliging van een inlogscript.
PostPosted: Mon Jul 05, 2010 10:46 pm 
Offline
Diamond Member
User avatar

Joined: Mon Oct 06, 2003 12:36 pm
Posts: 1373
Location: België
Blij dat het is opgelost :)


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 5 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron