PHP检查用户在文本输入

问题描述:

类型的东西,我有几个简单的HTML文本输入。我想检查用户输入的东西,而不只是空格。我下面的代码不起作用。PHP检查用户在文本输入

HTML(以一种形式):

<input type='text' name='email' id='email' /> 

PHP(以下简称 “行动” 网页形式):

$email=mysql_real_escape_string(strtolower(trim($_POST['email']))); 

    if (!$email || empty($email)){ // these are the checks that don't work 
      echo "no email entered"; 
    } 
+1

你检查什么是'$ _ POST []'? – Rupak 2012-01-05 15:33:21

+0

对我来说很好,谢谢你的分享。 – Robert 2012-01-05 15:33:55

+0

在你的“动作”部分之前检查'$ _POST ['email']'是什么。另外,要清楚,当你说*不工作时,你的意思是“没有输入电子邮件”在有空电子邮件变量时不显示? – Josh 2012-01-05 15:40:42

首先,你应该只使用MySQL的内部输入数据时mysql_real_escape_string 。检查时不要使用它。

我典型的手工验证语法是这样的:

if(!isset($_REQUEST['email']) || strlen(trim($_REQUEST['email'])) == 0){ 
    $errors[] = 'No email provided'; 
} 

检查在此之后,使用mysql_real_escape_string而将数据输入到MySQL

mysql_query('UPDATE myusers SET email = "'.mysql_real_escape_string($_REQUEST['email']).'" WHERE id = "'.mysql_real_escape_string($_REQUEST['id']).'"'); 

好运

试试这个:

if(preg_match('/[[:space:]]*/',$email){ 
    echo "no email entered"; 
} 

这种方式还能避免换行符标签

+2

正则表达式看起来很笨拙在这种情况下... – rdlowrey 2012-01-05 15:42:24

+0

是简单而有效的。有什么问题? – 2012-01-05 15:52:22

+1

嗯,有关于正则表达式的通常的说法是过度耗费资源 - 它是,但还不够,从而导致性能差异,除非重复操作多次。我认为这个问题更重要的是**语义**:PHP具有内置函数来处理这类事情。如果存在内置解决方案,则应该将其选为一般的基础广泛的解决方案,以便处理任何可能的情况(如正则表达式)。 – rdlowrey 2012-01-05 15:59:32

关闭我的头顶,我会尝试

$email = trim($email); 

if (!isset($email)){ 
    echo "no email entered"; 
} 

if ($email == ''){ 
    echo "no email entered"; 
} 

只是改变从“文”到“电子邮件” 输入字段它会自动检查的类型有人被输入一个有效的电子邮件或没有。

+0

这不仅仅是一个回答而是一个评论。请在答案中提供足够的详细信息,即使您认为这是一个简单问题,或者您想要参考链接或任何其他内容。 – Masoud 2017-07-12 19:33:54

+0

这不提供问题的答案。一旦你有足够的[声誉](https://*.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://*.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/16722419) – svarog 2017-07-16 21:01:38