Probleem met script: wachtwoord vergeten
Het probleem zit in het script dat een e-mailtje stuurt met de gebruikers gegevens als iemand in e2en form z'n e-mail adres achterlaat. naja alles werkt maar zovlug je een e-mail adres in voert dan krijg je de melding:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''members' WHERE 'email' = "[email protected]" FROM 'members' WHERE 'email'' at line 1
De php versie is te zien op:
www.teams.suxus.org/tools/login/php.php
Dit is het gemaakte script:
wachtwoord.php:
<form method="POST" action="option/wachtwoord_verzenden.php">
<p>
Your E-mail:
<input type="text" name="emailadres" size="30">
<br>
<input type="submit" name="submit" value="Send!">
</p>
</form>
option/wachtwoord_verzenden.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
// voor de foutmelden: "headers already send" te verkomen xD
session_start();
// controleren of er iets is ingevult.
if ($_POST['emailadres'] == ""){
die ('Je hebt geen e-mail adres ingevoerd');
}else{
//MySQL-selectiequery definiëren:
require ('../config.php');
$sql = "SELECT 'gebruikersnaam', 'wachtwoord' FROM 'members' WHERE 'email' = \"" . $_POST['emailadres'] ."\" ";
$sql .= "FROM 'members' ";
$sql .= "WHERE 'email' = \"" . $_POST['emailadres'] ."\" ";
$query = mysql_query ("$sql") or die (mysql_error());
$result = $query;
//tekst van het e-mailadres baseren op het queryresultaat:
if (mysql_num_rows($result) == 0) {
$bericht = "Helaas konden uw gebruikersnaam en wachtwoord voor het door u ingevulde e-mail adres (" . $_POST['emailadres'] . ") niet worden gevonden. <br> Als u toch een acount heeft neem dan svp contact op met de website-crew <br><br>met vriendelijke groeten, <br>Website-crew " . $script_url;
}else{
$bericht = "Hierbij ontvangt u uw acount gegevens u uw inlog gegevens. \r\n\r\n";
while ($record = mysql_fetch_array($result, MYSQL_ASSOC)){
$bericht .= "<br><br>Username: " . $record['gebruikersnaam'] . "\r\n";
$bericht .= "<br>Password: " . $record['wachtwoord'] . "\r\n";
$bericht .= "<br> <br>met vriendelijke groet, <br>Website-crew " . $script_url;
}
//resultaat vrijgeven en databaseverbinding sluiten
mysql_free_result($result);
mysql_close ($host,$user,$pass);
//het versturen van de e-mail:
mail("$emailadres", "Your New Password", "$bericht", "From: [email protected]");
// Bericht geven dat er een email is verzonden en na 5 secondes weer terug naar index.php:
header("Refresh: 5; URL=../index.php");
echo ("Er is een e-mail gestuurd met de gebruikers gegevens naar het E-mail adres:" . $_POST['emailadres']); // dit word 5 seconden lang getoond en dan wordt de persoon doorverbonden xD ^^
}
}
?>
// voor de foutmelden: "headers already send" te verkomen xD
session_start();
// controleren of er iets is ingevult.
if ($_POST['emailadres'] == ""){
die ('Je hebt geen e-mail adres ingevoerd');
}else{
//MySQL-selectiequery definiëren:
require ('../config.php');
$sql = "SELECT 'gebruikersnaam', 'wachtwoord' FROM 'members' WHERE 'email' = \"" . $_POST['emailadres'] ."\" ";
$sql .= "FROM 'members' ";
$sql .= "WHERE 'email' = \"" . $_POST['emailadres'] ."\" ";
$query = mysql_query ("$sql") or die (mysql_error());
$result = $query;
//tekst van het e-mailadres baseren op het queryresultaat:
if (mysql_num_rows($result) == 0) {
$bericht = "Helaas konden uw gebruikersnaam en wachtwoord voor het door u ingevulde e-mail adres (" . $_POST['emailadres'] . ") niet worden gevonden. <br> Als u toch een acount heeft neem dan svp contact op met de website-crew <br><br>met vriendelijke groeten, <br>Website-crew " . $script_url;
}else{
$bericht = "Hierbij ontvangt u uw acount gegevens u uw inlog gegevens. \r\n\r\n";
while ($record = mysql_fetch_array($result, MYSQL_ASSOC)){
$bericht .= "<br><br>Username: " . $record['gebruikersnaam'] . "\r\n";
$bericht .= "<br>Password: " . $record['wachtwoord'] . "\r\n";
$bericht .= "<br> <br>met vriendelijke groet, <br>Website-crew " . $script_url;
}
//resultaat vrijgeven en databaseverbinding sluiten
mysql_free_result($result);
mysql_close ($host,$user,$pass);
//het versturen van de e-mail:
mail("$emailadres", "Your New Password", "$bericht", "From: [email protected]");
// Bericht geven dat er een email is verzonden en na 5 secondes weer terug naar index.php:
header("Refresh: 5; URL=../index.php");
echo ("Er is een e-mail gestuurd met de gebruikers gegevens naar het E-mail adres:" . $_POST['emailadres']); // dit word 5 seconden lang getoond en dan wordt de persoon doorverbonden xD ^^
}
}
?>
Deze fout is nieuw voor me en ik doe zoiezo nog niet zolang met php scripten. weet iemand van jullie hier een oplossing voor. plaats dan maar een reply of mail het me maar -> insecure_06 [at] hotmail [dot] com
Gewijzigd op 05/01/2006 07:59:00 door Rob
$sql = "SELECT 'gebruikersnaam', 'wachtwoord' FROM 'members' WHERE 'email' = \"" . $_POST['emailadres'] ."\" ";
$sql .= "FROM 'members' ";
$sql .= "WHERE 'email' = \"" . $_POST['emailadres'] ."\"
Hier zijn minstens 2 dingen mee mis:
1) De veldnamen staan tussen quotes. Haal de quotes weg voor een beter resultaat. Je bent waarschijnlijk in de war geweest met backticks (`). Die kun je hier wel gebruiken, maar dat is niet echt nodig.
2) Het FROM/WHERE-gedeelte van de query komt 2x voor. Haal de laatste twee regels weg, en kijk dan eens of je query wel werkt.
haha oeps idd verkeerd tekentje -_- ff proberen of het nu wel werkt xD
Merci het werkt nu alleen nu nog Headers allready send error nog beetje netjes weg werken xD
Gewijzigd op 05/01/2006 09:37:00 door Niels Beckers
niels:
het is ook net zo veilig om de $_POST rechtstreeks in de database te stoppen.
ik stop hem niet in database xD
persoon typed mail adres in form het script gaat dan kijken of er een e-mail adres overeenkomt met het ingetypde mail adres. dan als er een overeenkomt wordt dara mailtje heen gestuurd met acount gegevens als niet word naar het ingevoerde mail adres een mail gestuurd met daarin een melding dat er geen overeenkomsten is tussen het doorhem ingevulde adres en een adres in de database.
naja het script werkt nu 100% xD was vergeten dat headers als zeg maar eerste komen dus jah lag nog beetje te kloten met de melding headers already send maarjah daarna had ik het door.
Gewijzigd op 05/01/2006 10:13:00 door Rob
zo ziet een stukje van mijn loginpagina er uit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$nickname = htmlentities($_POST['nickname']);
$nickname = mysql_real_escape_string($nickname);
$nickname = trim($nickname);
$wachtwoord = htmlentities($_POST['password']);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$wachtwoord = trim($wachtwoord);
$wachtwoord = md5($wachtwoord);
$query = "SELECT * FROM members WHERE UserNickname= '".$nickname."' AND UserWachtwoord='".$wachtwoord."' AND UserActief <> 0";
$result = mysql_query ($query) or trigger_error (mysql_error ());
$line = mysql_fetch_object($result);
$geactiveerd = $line->UserActief;
?>
$nickname = htmlentities($_POST['nickname']);
$nickname = mysql_real_escape_string($nickname);
$nickname = trim($nickname);
$wachtwoord = htmlentities($_POST['password']);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$wachtwoord = trim($wachtwoord);
$wachtwoord = md5($wachtwoord);
$query = "SELECT * FROM members WHERE UserNickname= '".$nickname."' AND UserWachtwoord='".$wachtwoord."' AND UserActief <> 0";
$result = mysql_query ($query) or trigger_error (mysql_error ());
$line = mysql_fetch_object($result);
$geactiveerd = $line->UserActief;
?>
niels:
zo'n dnge bedoel ik:
zo ziet een stukje van mijn loginpagina er uit
zo ziet een stukje van mijn loginpagina er uit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$nickname = htmlentities($_POST['nickname']);
$nickname = mysql_real_escape_string($nickname);
$nickname = trim($nickname);
$wachtwoord = htmlentities($_POST['password']);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$wachtwoord = trim($wachtwoord);
$wachtwoord = md5($wachtwoord);
$query = "SELECT * FROM members WHERE UserNickname= '".$nickname."' AND UserWachtwoord='".$wachtwoord."' AND UserActief <> 0";
$result = mysql_query ($query) or trigger_error (mysql_error ());
$line = mysql_fetch_object($result);
$geactiveerd = $line->UserActief;
?>
$nickname = htmlentities($_POST['nickname']);
$nickname = mysql_real_escape_string($nickname);
$nickname = trim($nickname);
$wachtwoord = htmlentities($_POST['password']);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$wachtwoord = trim($wachtwoord);
$wachtwoord = md5($wachtwoord);
$query = "SELECT * FROM members WHERE UserNickname= '".$nickname."' AND UserWachtwoord='".$wachtwoord."' AND UserActief <> 0";
$result = mysql_query ($query) or trigger_error (mysql_error ());
$line = mysql_fetch_object($result);
$geactiveerd = $line->UserActief;
?>
toch ben ik me 1 ding af aan het vragen je hebt in je database dus alle wachtwoorden met md5 maar hoe heb jij dan je 'wachtwoord vergeten' systeem dan lopen want ik wil eigenlijk ook md5 gaan gebruiken maar heb geen idee hoe ik dan nog het goede wachtwoord eruit krijg ipv de md5 code.