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