我要求用户输入姓名和电子邮件地址。提交表单后,将读取一个文件,并将其与用户名和电子邮件进行比较,以查看它们是否与字符串的一部分匹配。
$fname=$_POST['fname'];
//validate name field
function namecheck ($fname)
{
$regexp ="/^[A-Za-z]+$/";
if (! preg_match($regexp, $fname))
{
return false;
}
return true;
}
$message = "name is :" . $fname. "\n";
if (isset($_POST['submit'])) {
if (!namecheck ($fname))
{
echo'<script type="text/javascript">alert("Enter your name.")</script>';
return false;
}
else
{
if ( ! file_exists("users.txt"))
{
echo'<script type="text/javascript">alert("file does not exist")</script>';
}
else
{
$userStr = readfile("users.txt");
if (preg_match($userStr, $fname))
{
$fp = fopen ("users.txt", "a");
fwrite($fp, $message);
fclose($fp);
}
}
}
我的问题是:这会检查$fname
是users.txt
文件的一部分吗?
答案 0 :(得分:3)
只需更改此行:
if (preg_match($userStr, $fname))
这一个:
if (preg_match("/$fname/", $userStr))
要检查名称的正则表达式是非常限制,O'Connors
或Jean-François
等名称将无法通过。