jarco
Gebruiker
- Lid geworden
- 31 jan 2007
- Berichten
- 309
Hoi iedereen.
Ik ben aan een website bezig voor asieldieren. Deze heeft ook een login menu.
Omdat ik zeer weinig PHP ken heb ik voorbeelden van het net genomen en ben ik deze aan het aanpassen.
Voorlopig gaat alles perfect. Gebruikers kunnen een account aanmaken en hiermee inloggen. Enkel gaat het mis bij het aanvragen van een nieuw paswoord.
Dit is de code van login.php
en dit de code van de resetpaswoord.php
Ik heb het vermoeden dat het iets te maken heeft met de encryptie van het paswoord maar eigenlijk is dat maar een gokje .
Hij stuurt de mail en doet een aanpassing in de database. Alleen aanvaard hij om in te loggen het nieuwe paswoord niet.
Misschien hebben jullie tips?
Ik ben aan een website bezig voor asieldieren. Deze heeft ook een login menu.
Omdat ik zeer weinig PHP ken heb ik voorbeelden van het net genomen en ben ik deze aan het aanpassen.
Voorlopig gaat alles perfect. Gebruikers kunnen een account aanmaken en hiermee inloggen. Enkel gaat het mis bij het aanvragen van een nieuw paswoord.
Dit is de code van login.php
Code:
<?
session_start();
// dBase file
include ("dbconnect.php");
if ($_GET["op"] == "login")
{
if (!$_POST["username"] || !$_POST["password"])
{
die("You need to provide a username and password.");
}
// Create query
$q = "SELECT * FROM `users` "
."WHERE `username`='".$_POST["username"]."' "
."AND `password`=PASSWORD('".$_POST["password"]."') "
."LIMIT 1";
// Run query
$r = mysql_query($q);
if ( $obj = @mysql_fetch_object($r) )
{
// Login good, create session variables
$_SESSION["valid_id"] = $obj->id;
$_SESSION["valid_user"] = $_POST["username"];
$_SESSION["valid_time"] = time();
// Redirect to member page
Header("Location: members.php");
}
else
{
// Login not successful
die("Sorry, could not log you in. Wrong login information.");
}
}
else
{
//If all went right the Web form appears and users can log in
echo "<form action=\"?op=login\" method=\"POST\">";
echo "Username: <input name=\"username\" size=\"15\"><br />";
echo "Password: <input type=\"password\" name=\"password\" size=\"8\"><br />";
echo "<input type=\"submit\" value=\"Login\">";
echo "</form>";
}
?>
en dit de code van de resetpaswoord.php
Code:
<? //this function will display error messages in alert boxes, used for login forms so if a field is invalid it will still keep the info
//use error('foobar');
function error($msg) {
?>
<script language="JavaScript">
<!--
alert("<?=$msg?>");
history.back();
//-->
</script><?
exit;
}?>
</head>
<body>
<div id="bg">
<div id="sadrzaj">
<div id="toplinks">
<a href="#">Home</a>
<a href="#">Honden</a>
<a href="#">Katten</a>
<a href="#">Zoeken</a>
<a href="#">Asielen</a>
<a href="login.php">Inloggen</a>
</div>
<div id="zaglavlje">
<div id="title">
<a href="http://buitenpoot.be/buitenpoot/">Buitenpoot</a>
</div>
<div id="title_info">
<p><b><a href="#">Zoek een Dier</a></b>
</p>
</div>
</div>
<div id="navigacija">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Honden</a></li>
<li><a href="#">Katten</a></li>
<li><a href="#">Zoeken</a></li>
<li><a href="#">Asielen</a></li>
<li><a href="login.php">Inloggen</a></li>
<li><a href="#">Succesverhalen</a></li>
</ul>
<div class="lijevo">
<p><b>Administratie menu</b></p>
<p>Hier komt het administratie menu als je ingelogged bent als admin of als beheerder of bijdrager aan een asiel of vereniging.</p>
</div>
</div>
<div id="clanci">
<?
define('IN_SCRIPT', true);
// Start a session
session_start();
//Connect to the MySQL Database
include 'dbconnect.php';
//This functions checks and makes sure the email address that is being added to database is valid in format.
function check_email_address($email) {
// First, we check that there's one @ symbol, and that the lengths are right
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
// Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
return false;
}
// Split it into sections to make life easier
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
return false;
}
}
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false; // Not enough parts to domain
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
return false;
}
}
}
return true;
}
if (isset($_POST['submit'])) {
if ($_POST['forgotpassword']=='') {
error('Please Fill in Email.');
}
if(get_magic_quotes_gpc()) {
$forgotpassword = htmlspecialchars(stripslashes($_POST['forgotpassword']));
}
else {
$forgotpassword = htmlspecialchars($_POST['forgotpassword']);
}
//Make sure it's a valid email address, last thing we want is some sort of exploit!
if (!check_email_address($_POST['forgotpassword'])) {
error('Email Not Valid - Must be in format of name@domain.tld');
}
// Lets see if the email exists
$sql = "SELECT COUNT(*) FROM users WHERE email = '$forgotpassword'";
$result = mysql_query($sql)or die('Could not find member: ' . mysql_error());
if (!mysql_result($result,0,0)>0) {
error('Dit email adres werd niet gevonden!');
}
//Generate a RANDOM MD5 Hash for a password
$random_password=md5(uniqid(rand()));
//Take the first 8 digits and use them as the password we intend to email the user
$emailpassword=/*substr(*/$random_password/*, 0, 8)*/;
$newpassword= $emailpassword;
//Encrypt $emailpassword in MD5 format for the database
// $newpassword = md5($emailpassword);
// Make a safe query
$query = sprintf("UPDATE `users` SET `password` = '%s'
WHERE `email` = '$forgotpassword'",
mysql_real_escape_string($newpassword));
mysql_query($query)or die('Could not update users: ' . mysql_error());
//Email out the infromation
$subject = "Uw nieuw paswoord op buitenpoot";
$message = "Uw nieuw paswoord is het volgende:
----------------------------
Paswoord: $emailpassword
----------------------------
Deze informatie is opgeslagen in onze database
Deze email werd automatisch aangemaakt. Indien u geen nieuw paswoord heeft aangevraagd gelieve dan een mail te sturen naar support@buitenpoot.be.";
$site_name = "Buitenpoot";
$site_email = "support@buitenpoot.be";
if(!mail($forgotpassword, $subject, $message, "FROM: $site_name <$site_email>")){
die ("Sending Email Failed, Please Contact Site Admin! ($site_email)");
}else{
error('New Password Sent!.');
}
}
else {
?>
<form name="forgotpasswordform" action="" method="post">
<table border="0" cellspacing="0" cellpadding="3" width="100%">
<caption>
<h2>Uw paswoord opnieuw aanvragen</h2>
</caption>
<tr>
<td>Email Adres:</td>
<td><input name="forgotpassword" type="text" value="" id="forgotpassword" /></td>
</tr>
<tr>
<td colspan="2" class="footer"><input type="submit" name="submit" value="Aanvragen" class="mainoption" /></td>
</tr>
</table>
</form>
<?
}
?>
Ik heb het vermoeden dat het iets te maken heeft met de encryptie van het paswoord maar eigenlijk is dat maar een gokje .
Hij stuurt de mail en doet een aanpassing in de database. Alleen aanvaard hij om in te loggen het nieuwe paswoord niet.
Misschien hebben jullie tips?
Laatst bewerkt: