Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php电子邮件验证(筛选验证电子邮件)不工作_Php_Mysql_Validation_Email Validation - Fatal编程技术网

php电子邮件验证(筛选验证电子邮件)不工作

php电子邮件验证(筛选验证电子邮件)不工作,php,mysql,validation,email-validation,Php,Mysql,Validation,Email Validation,我知道有很多关于这方面的问题,但是我似乎不能选择我的编码错误。我知道这很简单,但我看不出来 我必须创建一个表单,当它被提交时,数据将被输入到MySQL数据库中,但是数据需要首先被验证。我对此有两个问题,第一个是我的电子邮件验证无法使用:(filter\u var($email,filter\u validate\u email)) 问题是,当我提交表单时,无论电子邮件是否有效,它都会返回true。 如果我输入(!filter\u var($email,filter\u validate\u em

我知道有很多关于这方面的问题,但是我似乎不能选择我的编码错误。我知道这很简单,但我看不出来

我必须创建一个表单,当它被提交时,数据将被输入到
MySQL
数据库中,但是数据需要首先被验证。我对此有两个问题,第一个是我的电子邮件验证无法使用:
(filter\u var($email,filter\u validate\u email))

问题是,当我提交表单时,无论电子邮件是否有效,它都会返回true。 如果我输入
(!filter\u var($email,filter\u validate\u email))
则无论输入如何,它
都返回false

第二个问题是,在加载页面时,它会在SQL数据库中添加一个空白条目,并添加无效条目。i、 e.如果在提交表单时我没有输入名称,则验证将运行,并收到
错误消息“name is required”
,但它仍会在表中创建一个名称为空的条目

我使用的是PHP版本5.3.27

这是我的tafe课程,我正在做,但他们目前正在度假,所以任何帮助都将不胜感激

从文件1编码:

<body>
<?php

// define variables and set to empty values
$nameErr;
$Name = $Address = $Phone = $Mobile = $Email="example@example.com";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{

if (empty($_POST["Name"]))
{$nameErr = "Name is required"; }

else {$Name = test_input($_POST["Name"]);}

if (empty($_POST["Address"]))
 {$Address = "";}
else
 {$Address = test_input($_POST["Address"]);}

if (empty($_POST["Phone"]))
 {$Phone = "";}
else
 {$Phone = test_input($_POST["Phone"]);}

if (empty($_POST["Mobile"]))
 {$Mobile = "";}
else
 {$Mobile = test_input($_POST["Mobile"]);}  


if(filter_var($Email, FILTER_VALIDATE_EMAIL)){ 
 echo"Valid Email";
 }
else{ 
echo "Not a Valid Email";    
}
echo phpinfo();
}

function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

?>

<form name="addcontact" method="post" action= "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>", "add-contact.php">

<table border="1" cellpadding="2">
<caption> Add New Caption </caption>
<tr>
<td><label for="Name">Name</label></td>
<td><input type="text" name="Name" size="30" maxlenght="50" tabindex="1"/> <span class="error">*<?php echo $nameErr;?></span>
</td>
</tr>

<tr>
<td><label for="Address">Address</label></td>
<td><textarea name="Address" cols="45" rows="5" tabindex="2"></textarea></td>
</tr>

<tr>
<td><label for="Phone">Phone</label></td>
<td><input type="text" name="Phone" size="20" maxlenght="20" tabindex="3" /> </td>
</tr>

<tr>
<td><label for="Mobile">Mobile</label></td>
<td><input type="text" name="Mobile" size="20" maxlenght="20" tabindex="4" /> </td>
</tr>

<tr>
<td><label for="Email">Email</label></td>
<td><input type="text" name="Email" size="30" maxlenght="50" tabindex="5" /></td>
</tr>

<tr>
<td colspan"2" align="center"><input type="Submit" name="Submit" value="Submit" tabindex="6"/>      
</td>
</tr>


</table>
</form>

<?php 
include("add-contact.php");
?>


</body>
</html>`

And coding from file 2:


<body>
<?php 
$Name = $_POST["Name"];
$Address = $_POST["Address"];
$Phone = $_POST["Phone"];
$Mobile = $_POST["Mobile"];
$Email = $_POST["Email"];


$dbc = mysql_connect("localhost:3306", "root", "webbm01");
if (!$dbc)
die ('Could not connect: ' .mysql_error());


$db_selected = mysql_select_db("tafe", $dbc );
if (!$db_selected)
die ('Could not connect: ' . mysql_error());

$qry
 = "INSERT INTO contacts (Name, Address, Phone, Mobile, Email) VALUES ('" . addslashes($Name) . "', '" . addslashes($Address) . "', '" . addslashes($Phone) . "', '" . addslashes($Mobile). "', '" . addslashes($Email) . "')";

$rst = mysql_query($qry, $dbc);

if ($rst)
{
echo "<b><font color='green'>The contact has been added.</font></b>";
}
else 
{
echo "<b><font color='red'>Error: ". mysql_error($dbc) . ". The contact could not be added.</font></b>";
}

mysql_free_result($rst);


?>
</body>
</html>


验证应在文件中进行:

'添加contact.php'

因为这是from操作对submit的要求

初始验证器没有意义,因为$u POST数组没有初始化

SQL insert语句为空的原因是您决定执行以下操作:

include("add-contact.php");

在第一个文件中,它在每次加载页面时没有有效的$u POST初始化运行。

检查此代码以进行电子邮件验证等:

<body> <?php

// define variables and set to empty values


if ($_SERVER["REQUEST_METHOD"] == "POST") {

if (empty($_POST["Name"])) {$nameErr = "Name is required"; }else {$Name = htmlspecialchars($_POST["Name"]);}

if (empty($_POST["Address"]))  {$Address = "";}else{$Address = htmlspecialchars($_POST["Address"]);}

if (empty($_POST["Phone"]))  {$Phone = "";}else {$Phone = htmlspecialchars($_POST["Phone"]);}

if (empty($_POST["Mobile"]))  {$Mobile = "";}else {$Mobile = htmlspecialchars($_POST["Mobile"]);}  


if(filter_var($_POST['Email'], FILTER_VALIDATE_EMAIL)){   echo"Valid Email";  }else{ echo "Not a Valid Email"; }

}

?>

<form name="addcontact" method="post" action= "<?php echo $_SERVER["PHP_SELF"];?>">

<table border="1" cellpadding="2"> <caption> Add New Caption </caption> <tr> <td><label for="Name">Name</label></td> <td><input type="text" name="Name" size="30" maxlenght="50" tabindex="1"/> <span class="error">*<?php echo $nameErr;?></span> </td> </tr>

<tr> <td><label for="Address">Address</label></td> <td><textarea name="Address" cols="45" rows="5" tabindex="2"></textarea></td> </tr>

<tr> <td><label for="Phone">Phone</label></td> <td><input type="text" name="Phone" size="20" maxlenght="20" tabindex="3" /> </td> </tr>

<tr> <td><label for="Mobile">Mobile</label></td> <td><input type="text" name="Mobile" size="20" maxlenght="20" tabindex="4" /> </td> </tr> <tr> <td><label for="Email">Email</label></td> <td><input type="text" name="Email" size="30" maxlenght="50" tabindex="5" /></td> </tr> <tr> <td colspan"2" align="center"><input type="Submit" name="Submit" value="Submit" tabindex="6"/>       </td> </tr> </table> </form>

</body> </html>`


删除行
include(“addcontact.php”)

<>这将停止数据库中的空白插入。 同时删除该操作

<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>

只要试试
action=“add contact.php”

电子邮件验证对我来说很好。

为什么你要在一个页面上做所有事情?有两个页面。1使用表单和验证,然后使用编码将数据添加到sqlput insert查询。在这种情况下,只有当您提交时,单击
if($\u SERVER[“REQUEST\u METHOD”]==“POST”){}
很抱歉,我感到困惑,我在开始时的编码中有这样的代码,但当我单击“提交”时,验证不起作用?该代码也不会验证电子邮件。如果我写了一封电子邮件,它只是刷新表单,没有回音“123”和一个有效的Hotmail地址,两者都产生了相同的结果。你用了我所有的代码吗?它和我一起工作。这是php函数,它只验证电子邮件。没关系。。。我现在可以用了。非常感谢你!!好的,我把它去掉。谢谢所以我的精确编码对你有用?真奇怪。我使用的是php版本5.3.27,因此我认为我应该能够使用filter_validate_email功能???是的,您将能够使用该功能,并且该功能将起作用。。如果您已经在使用内置函数PHP SERVER SELF,那么就没有必要提供额外的东西,这会使它变得更复杂。如果您想要一些正则表达式来进行电子邮件验证,以防该函数不起作用,您可以在(!preg_match(//^[[u a-z0-9-]+(\.[u a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i,$email]){return“电子邮件地址无效”;
}因此,如果我可以使用它,那么为什么验证对我不起作用?如果我删除include(“add contact.php”)并只执行action=“add contact.php”验证仍然不起作用,当我提交表单时,它只会显示“valid Email”,即使我输入了无效的电子邮件,如“123”“您是否在变量$Email中传递了正确的值??应该是$_POST['Email']。。在上面的代码中,您编写了$Email=”example@example.com“这是一封有效的电子邮件。因此,您可能需要检查这一点,并使$Email正确且动态。