我登录了我的网站。下面显示了注册页面。 emailaddress是他们的用户名。如果@符号和?如何创建错误消息警报。尚未插入用户名(emailaddress)字段?
<?php
// Check if he wants to register:
if (!empty($_POST[emailaddress]))
{
// Check if passwords match.
if ($_POST[password] != $_POST[password2])
exit("Error - Passwords don't match. Please go back and try again.");
// Assign some variables.
$date = mktime("d - m - Y");
$ip = $_SERVER[REMOTE_ADDR];
require_once("config.php");
// Register him.
$query = mysql_query("INSERT INTO neworders
(emailaddress, firstname, surname, password, datereg, ip)
VALUES ('$_POST[emailaddress]','$_POST[firstname]','$_POST[surname]','$_POST[password]','$datereg','$ip')")
or die ("Error - Couldn't register user.");
echo "Welcome $_POST[username]! You've been successfully reigstered!<br /><br />
Please login <a href='login.php'><b>here</b></a>.";
exit();
}
?>
答案 0 :(得分:2)
您应该使用更强大的解决方案来验证电子邮件。将PHP的filter_var()
函数与FILTER_VALIDATE_EMAIL
标志一起使用。
$validEmail = filter_var($email, FILTER_VALIDATE_EMAIL);
当然,这只是用于验证电子邮件。如果要将其插入数据库,请将该数据库的转义机制用于字符串或使用绑定查询。
答案 1 :(得分:0)
使用本页底部的功能:
答案 2 :(得分:0)
您可以使用stristr()php函数检查字符串中是否包含字符(这不是理想的解决方案,但只是非常简单地检查字符串中的字符是否与您描述的一样存在。使用filter_var如下所述是更好的解决方案) 所以,要做你所要求的,你可以做点什么:
if(!(stristr($_POST['emailaddress'], '@') && stristr($_POST['emailaddress'], '.')) {
echo 'Email not valid';
exit(1);
}
你可以做的其他事情是使用预建的php filter_var函数来执行此操作:http://php.net/manual/en/function.filter-var.php
if(!filter_var($_POST['emailaddress'],FILTER_VALIDATE_EMAIL)) {
echo 'Email not valid';
exit(1);
}
如果需要,您还可以使用正则表达式模式匹配。我还建议在$ _POST ['emailaddress']字段上进行某种清理(mysql_real_string_escape),如果你将它插入数据库中。