Hallo allemaal , ik heb een aanmeld systeem op mijn website waarbij ik het wachtwoord automatisch genereer maar nu kom ik er dus achter dat er iets niet goed gaat met de mailing van de login gegevens , bij sommige providers kom de mail niet binnen heel apart maar ok , nu wil ik mijn systeem aanpassen wat op zich goed gaat maar heb ik een if{ else} verkeerd geplaatst vermoed ik , ik zit er al uren naar te kijken maar ik zie de fout helaas niet ik hoop dat iemand hem wel ziet en mij erop kan wijzen alvast bedankt


<?
if ( !@include('_config.php') )
{
die('Fatal Error: Please contact admin if you keep getting this error.');
}
$msg1 = '';
if(getenv('REQUEST_METHOD') == 'POST')
{
if ( isset($_POST['aanmelden_y']) )
{
if ( isset($_POST['signup_akkoord']) )
{
if ( !empty($_POST['signup_login']) && !empty($_POST['signup_email']) && !empty($_POST['signup_wachtwoord']) )
{
$result = mysql_query('SELECT id FROM users WHERE ip=\''. $clientIP.'\'');
if ( mysql_num_rows($result) == 0 )
{
$wachtwoord = $_POST['signup_wachtwoord'];
if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $wachtwoord) )
{
$email = $_POST['signup_email'];
if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $email) )
{
$result = mysql_query('SELECT user_id FROM newsletter WHERE email=\''.$email.'\'');
if ( mysql_num_rows($result) == 0 )
{
$login = $_POST['signup_login'];
if ( preg_match('/^[a-zA-Z0-9_-]{3,16}$/', $login) )
{
$result = mysql_query('SELECT id FROM users WHERE login=\''.$login.'\'');
if ( mysql_num_rows($result) == 0 )
{
$refferal_id = 0;
$refferal = ( isset($_GET['crimineeltje']) ) ? trim($_GET['crimineeltje']) : '' ;
if ( preg_match('/^[a-zA-Z0-9_-]{3,16}$/', $refferal) )
{
$result = mysql_query('SELECT id FROM users WHERE login=\''.$refferal.'\'');
if ( $row = mysql_fetch_assoc($result) )
{
$refferal_id = $row['id'];
}
}
mysql_query('');
$user_id = mysql_insert_id();
mysql_query('INSERT INTO users_login (user_id,pass)VALUES(' . $user_id . ',\''.md5($wachtwoord).'\')')OR die(mysql_error());
sms(1,$user_id, "Welkom", "Welkom $login<br>
$msg1 = 'Je bent zojuist aangemeld op de website<br><br>Hieronder vind u de login gegevens <br><br><b><font color="#00ff00">Login: '.$login.'<br>Wachtwoord: '.$wachtwoord.'</font></b>';
}
else
{
$msg1 = 'Er is al iemand met deze login.';
}
}
else
{
$msg1 = 'Je login mag alleen letters, nummers, _ en - bevatten.';
}
}
else
{
$msg1 = 'Dit email adres is al gebruikt.';
}
}
else
{
$msg1 = 'Je moet je geldig email adres geven.';
}
}
else
{
$msg1 = 'Er is al iemand geregistreerd op dit ip.';
}
//nieuwe else controle voor ww
}
else
{
$msg1 = 'Wachtwoord niet goed.';
}
// einde nieuwe controle voor ww
}
else
{
$msg1 = 'Je hebt niet alles ingevoerd.';
}
}
else
{
$msg1 = 'Je hebt de regels niet geaccepteerd.';
}
}
}
?>
ik mail uit met

mail($email,'Website',$bericht,'MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\nFrom: website<[email protected]>\r\n');

[size=xsmall]Toevoeging op 19/09/2017 09:13:38:[/size]

- Ariën - op 19/09/2017 09:12:34

'[email protected]' is bijv. niet mogelijk.


hoe kan ik dit oplossen want dit is natuurlijk wel essentieel
Gebruik filter_var om je e-mailadressen te valideren, en zorg dat je een recente PHP-versie draait.

Bij zeer sterke voorkeur raad ik aan om je eens te verdiepen in de functies van mysqli en deze te gebruiken. In PHP 7 zijn de mysql-functies niet meer beschikbaar, en zal je script direct vastlopen.
gelukkig heb ik een dedicted server dus heb ik zelf in de hand wanneer ik ga updaten maar ik ga me daar zeker in verdiepen en alle scripts updaten dank je wel voor jullie hulp en tips , aanmeld systeem werkt gelukkig weer , nu uitzoeken en lezen de mysqli versie thanks...

[size=xsmall]Toevoeging op 19/09/2017 09:22:40:[/size]

dus

if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $email) )
{

word gewoon enkel

$email = filter_var($email, FILTER_SANITIZE_EMAIL);

en dan natuurlijk de if etc aanpassen
Lees mijn link eens goed, het is
FILTER_VALIDATE_EMAIL. En dit geheel moet in plaats van de reguliere-expressie.

Nog wat tips:
- Ik zie een hoop queries die gevoelig zijn voor SQL-injection. Dus escape deze POST/GET waardes met mysqli_real_escape_string()
- md5() als hashing voor passworden is niet meer van deze tijd en eenvoudig te kraken. Gebruik password_hash() en password_verify(). Uiteraard moet je alle huidige wachtwoorden resetten.
thx voor de tips arien

[size=xsmall]Toevoeging op 19/09/2017 10:11:47:[/size]

ik zag het tik foutje haha

[size=xsmall]Toevoeging op 19/09/2017 10:11:47:[/size]

ik zag het tik foutje haha
Als ik meer dan drie if's in elkaar zie staan dan ga ik het niet meer lezen. Lang leve de functies ;-)
Ikzelf zou de foutmeldingen van de validaties in een array verzamelen, en die dan doorlopen op het moment dat er foutmeldingen in bestaat. Je hoeft dan ook geen geneste if-else's te gebruiken, maar enkel steeds een if'je, omdat je niet steeds genest verder gaat kijken als die ene validatie goed gekeurd is.

Als er geen foutmeldingen in de array staan, dan is alles goed, en kan de afhandeling van je script beginnen.

Zoiets is niet alleen een stuk beter onderhoudbaar, maar ook eens gebruiksvriendelijker omdat de gebruiker meteen ziet wat er fout is ingevuld.

Reageren