Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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
防止用户访问URL php文件_Php_Url - Fatal编程技术网

防止用户访问URL php文件

防止用户访问URL php文件,php,url,Php,Url,我用验证器为我的网站制作了一个简单的联系表单,所以用户应该在提交联系表单之前输入所有输入。提交后,用户将被引导到一个php页面,即所有联系信息将被发送到邮件。不幸的是,用户只需输入PHP的url就可以绕过所有必需的输入。结果是一封没有输入的电子邮件 如何防止用户访问我的PHP文件的URL:请参阅下面的当前PHP代码 <?php /* Subject and Email Variables */ $emailSubject = ''; $webMaster = ''; /* Gather

我用验证器为我的网站制作了一个简单的联系表单,所以用户应该在提交联系表单之前输入所有输入。提交后,用户将被引导到一个php页面,即所有联系信息将被发送到邮件。不幸的是,用户只需输入PHP的url就可以绕过所有必需的输入。结果是一封没有输入的电子邮件

如何防止用户访问我的PHP文件的URL:请参阅下面的当前PHP代码

<?php
/* Subject and Email Variables */ 
$emailSubject = ''; 
$webMaster = '';
/* Gathering Data Variables */ 
$name = $_POST['Name']; 
$adress = $_POST['Adresse']; 
$email = $_POST['email']; 
$body = <<<EOD <br><hr<br> Name: $name <br> Adresse: $adress <br> Epost: $email <br> EOD; 
$headers = "From: $email\r\n"; $headers = "Content-type: text/html\r\n";    
$success = mail($webMaster, $emailSubject, $body, $headers); 
/* Results rendered as HTML */ 
$theResults = <<<EOD EOD; echo "$theResults";     
?>    

例如,您可以生成某种类型的参数,并将其传递到新的PHP页面。如果此参数未通过(尚未生成),您只需测试:

!isset($_GET['sent']) { headers("Location: WHEREVER YOU NEED TO REDIRECT") }

例如,您可以生成某种类型的参数,并将其传递到新的PHP页面。如果此参数未通过(尚未生成),您只需测试:

!isset($_GET['sent']) { headers("Location: WHEREVER YOU NEED TO REDIRECT") }

检查是否设置了$\u POST并在处理文件中包含数据,否则将用户重定向到所需文件检查是否设置了$\u POST并在处理文件中包含数据,否则将用户重定向到所需文件@Stefano,您的意思是此代码!isset($_GET['sent']){headers(“Location:where YOU NEED TO REDIRECT”)}应该考虑创建某种令牌验证。。随机字符串生成器:我对你的问题的看法:1。填写表格2。提交表格3。创建一个随机生成的字符串,并在$\u会话['validate']中进行设置。同时将$_GET['key']中创建的密钥发送到第2页。4.在发送电子邮件之前,甚至在访问第二页之前,检查$\u SESSION['validate']==$\u GET['key']是否正确,然后将false或页眉位置返回到第一页。我知道它不太安全,但它很有效。这只是一个想法!:)Marvinoo对我的想法给出了一个更详细的版本,这个版本可以很好地工作。我会跳过生成字符串的想法,因为我似乎明白这并不是真正的“安全”,只是为了确保电子邮件确实包含一些内容。普通用户不会冒跳过此部分的风险。考虑到这仍然是PHP,当然它必须放在@Marvinoo中。这并不是真正的安全问题,而是更多的电子邮件确实包含了一些东西。我尝试在我的PHP文件中添加您建议的行,但它实际上不起作用。您必须发送某种参数才能使它起作用。简单的例子,如果您的表单以POST的形式发送数据,请添加一个名为“sent”的隐藏输入字段,并在下面的页面中签入isset($_POST['sent'])@Stefano,您的意思是这段代码!isset($_GET['sent']){headers(“Location:where YOU NEED TO REDIRECT”)}应该考虑创建某种令牌验证。。随机字符串生成器:我对你的问题的看法:1。填写表格2。提交表格3。创建一个随机生成的字符串,并在$\u会话['validate']中进行设置。同时将$_GET['key']中创建的密钥发送到第2页。4.在发送电子邮件之前,甚至在访问第二页之前,检查$\u SESSION['validate']==$\u GET['key']是否正确,然后将false或页眉位置返回到第一页。我知道它不太安全,但它很有效。这只是一个想法!:)Marvinoo对我的想法给出了一个更详细的版本,这个版本可以很好地工作。我会跳过生成字符串的想法,因为我似乎明白这并不是真正的“安全”,只是为了确保电子邮件确实包含一些内容。普通用户不会冒跳过此部分的风险。考虑到这仍然是PHP,当然它必须放在@Marvinoo中。这并不是真正的安全问题,而是更多的电子邮件确实包含了一些东西。我尝试在我的PHP文件中添加您建议的行,但它实际上不起作用。您必须发送某种参数才能使它起作用。简单的示例,如果表单以POST的形式发送数据,请添加一个名为“sent”的隐藏输入字段,并在下面的页面中签入isset($\u POST['sent'])