创建一个电子邮件地址的用户名

时间:2012-03-30 03:14:12

标签: php mysql html

我登录了我的网站。下面显示了注册页面。 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();
}

?>

3 个答案:

答案 0 :(得分:2)

您应该使用更强大的解决方案来验证电子邮件。将PHP的filter_var()函数与FILTER_VALIDATE_EMAIL标志一起使用。

$validEmail = filter_var($email, FILTER_VALIDATE_EMAIL);

当然,这只是用于验证电子邮件。如果要将其插入数据库,请将该数据库的转义机制用于字符串或使用绑定查询。

答案 1 :(得分:0)

使用本页底部的功能:

http://www.linuxjournal.com/article/9585

答案 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),如果你将它插入数据库中。