阻止直接访问 php 脚本,但允许从 index.html

2023-12-24

我有一个简单的联系表单,用户在其中输入数据,表单将其发送到“mail.php”以传递到那里的电子邮件帐户。 “mail.php”文件与“index.html”一起位于我的根目录中,我遇到的问题是我不希望用户能够访问http://mydomain.com/mail.php http://mydomain.com/mail.php直接通过他们的浏览器,因为这只会发送一个空白表格,并可能被用来向我发送垃圾邮件。我真的很紧张试图找出一种只允许表单访问“mail.php”的方法。这就是我设置表单的方式:

<form method="post" action="mail.php">
    <div class="row half">
        <div class="6u"><input type="text" required autocomplete="off" name="name" placeholder="Name" /></div>
        <div class="6u"><input type="email" required autocomplete="off" name="email" placeholder="Email" /></div>
    </div>
    <div class="row half">
        <div class="12u"><textarea name="message" required placeholder="Message" rows="6"></textarea></div>
    </div>
    <div class="row">
        <div class="12u">
            <ul class="actions">
                <li><input type="submit" class="button" value="Send Message" /></li>
            </ul>
        </div>
    </div>
</form>

然后我的“mail.php”文件设置如下,成功标头是一个 html 页面,其中包含几行文本,让用户知道他们的电子邮件已发送,然后将其重定向回http://mydomain.com http://mydomain.com5秒后。

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent=" From: $name \n Message: $message";
$recipient = "[email protected] /cdn-cgi/l/email-protection";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("Location: success");
exit;
?>

我已经摆弄了 .htaccess 和无数其他东西,但我所做的一切似乎都不起作用 - 它要么完全阻止页面(以便表单也无法访问它),要么根本不阻止它。我也看过这个https://stackoverflow.com/a/409515/3366954 https://stackoverflow.com/a/409515/3366954但也不知道如何让它发挥作用。我对 html 和 php 很陌生,但到目前为止我已经设法弄清楚了其他一切。这次我错过了什么?


只需向您的 PHP 脚本添加一些验证即可。例如:

<?php
if(isset($_POST['name'], $_POST['email'], $_POST['message'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $formcontent=" From: $name \n Message: $message";
    $recipient = "[email protected] /cdn-cgi/l/email-protection";
    $subject = "Contact Form";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    header("Location: success");
    exit;
}
?>

这将防止任何空白提交,而不需要您按引用页面进行过滤。作为一般规则,您应该always无论如何,验证用户输入,因为它是各种麻烦的根源(黑客攻击、错误、通常意外的行为)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阻止直接访问 php 脚本,但允许从 index.html 的相关文章

  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 在html表格的每一行添加点击功能

    我最近创建了一个函数 它根据用户在网站中的输入进行一些复杂的名称匹配 并将结果作为表格格式的 html 文件返回 我的问题是如何在每一行添加点击功能 df get cust info returns a pandas dataframe d
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 交换关联数组中的两个项目

    Example arr array apple gt sweet grapefruit gt bitter pear gt tasty banana gt yellow 我想调换一下柚子和梨的位置 这样数组就变成了 arr array ap
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • 使用 JavaScript 使链接保持活动状态并在单击时显示悬停效果

    I am struggling to make this work I d like to make it where if O F is clicked the hover state stays active if another li
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • HTML 中部分着色的阿拉伯语单词

    我不会说阿拉伯语 但我需要我们网站上对阿拉伯语的具体支持 我需要将部分阿拉伯语单词放在 span 与单词其他部分的风格不同 当我输入两个字符时 and 它们被组合成word 但是当我使用 HTML 标记时 span span 这些字母在输出
  • 如何在使用页面锚点导航时设置“激活”类以在 Angular 2 中引导导航栏?

    我正在使用 Angular 2 和 Bootstrap 4 创建一个单页网站 我创建了一个始终位于页面顶部的导航栏组件 并且我正在使用页面锚点导航 id 请注意 我还没有创建路由模块 到目前为止还没有必要这样做 导航栏代码如下
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 我可以使用 jQuery 打开下拉列表吗

    对于 HTML 中的下拉列表
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B

随机推荐

  • RxJS switchMap 不会取消内部合并的可观察值

    内部合并的可观察量不会以此代码终止 rxjs 5 5 6 let source new Subject
  • python和pygame中的随机非重叠圆(控制圆数)

    我正在编写具有不同半径的非重叠随机圆的代码 我得到了应得的 但我检查重叠或非重叠的 if 语句排除了许多圆 所以 我得到的圈子数量较少 这是代码 import pygame import numpy as np pygame init di
  • Polymer,如何打开/关闭 google-map-marker InfoWindow?

    我正在使用网络组件谷歌地图标记 http googlewebcomponents github io google map components google map google map marker在我创建的聚合物元素中 我想捕捉它的点
  • 获取 OAuth 令牌以供 Azure DevOps API 使用

    我有一个用 Angular 7 编写的 Web 应用程序 我正在尝试使用 Azure DevOps API 并且我知道我必须设置一个 Azure Active Directory 应用程序 我尝试过一些类似的库adal angular ms
  • 如何在 OSX Mavericks 上安装命令行工具

    我正在运行 OSX Mavericks 10 9 在尝试更新 Rails 中的捆绑包时 收到以下错误消息 你必须先安装开发工具 我已经安装了 Xcode 但似乎没有选项可以从 Xcode 4 6 中安装工具 如何通过终端下载并安装命令行工具
  • 如何在量角器中打印网页元素?

    当量角器等待元素超时时 我想将元素打印为消息的一部分 waitForElementDisplayed webDriverEl time timeOut let EC protractor ExpectedConditions let isV
  • Android 应用程序:已连接互联网

    我如何检查是否已成功连接互联网 Wifi 3G 其他 如果用户没有 Wifi 连接 我已经向用户显示错误 但我如何确保用户确实获得了 3G 连接 如果他们愿意 在没有 Wifi 连接的情况下连接使用该应用程序 如果您只是想查看手机是否连接到
  • 如何从 dapper 返回的复杂对象中修剪所有字符串

    我正在使用一个遗留数据库 在这个数据库中 数据被分配了列的最大长度 如果字符串数据较短 则会自动在末尾填充空格 我想做的是在我所做的每个查询中修剪所有这些结尾空格 我认为更好的方法之一是使用反射为简洁的查询创建扩展方法 但我似乎无法让它发挥
  • 来自类库的 HtmlEncode

    我有一个类库 C 语言 我需要使用 HtmlEncode 方法对数据进行编码 这可以通过网络应用程序轻松完成 我的问题是 如何使用从控制台应用程序调用的类库中的此方法 System Net WebUtility https learn mi
  • Yeoman:使用用户提供的参数调用子生成器

    我正在编写我的第一个 Yeoman 生成器 它会提示用户进行各种输入 并根据他们的响应有条件地创建文件 我需要能够根据用户输入调用子例程 可能是 Yeoman 子生成器 并将参数传递给它 我想使用命名函数 不会自动运行 的原因是 有时用户的
  • 正常优先级构建不会在 TFS 2010 中构建 [已关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我在 TFS 2010 中设置了两个构建流程 当任何开发人员将代码签入 TFS 时 就会启动一个构建 第二个构建每天晚上 12 30 运行
  • IE7 中 window.open() 后权限被拒绝

    我们有一个带有嵌入式 IE 控件的 winforms 应用程序 在这个IE控件中 我们运行一个Web应用程序 我控制Web应用程序 但不控制winforms应用程序 在 Web 应用程序中 我运行一些 javascript 来打开一个子窗口
  • WPF 触发器不为空

    如何在 WPF 中触发属性时触发操作不为空 这是一个可行的解决方案 当is null
  • Coursera空气污染作业

    使用Mac操作系统10 10 3 RStudio 版本 0 98 1103 我的工作目录是 332 个 csv 文件的列表 并且我设置正确 这是代码 pollutantmean lt function directory pollutant
  • SSIS 中的 Microsoft Office 12.0 Access 数据库引擎 Oledb 提供程序

    我无法在 SSIS 中看到 Microsoft Office 12 0 Access 数据库引擎 Oledb 提供程序 而我正在使用 MS Office 2013 如何重新解决这个问题 您缺少 Microsoft Access 数据库引擎
  • std::map 成员函数指针?

    我需要实施一个std map with
  • Eclipse HotKey:如何在选项卡之间切换?

    How can I switch between opened windows in Eclipse There is Ctrl F6 but it s asking me which one I want but I want switc
  • 定时向量 vs 映射 vs unordered_map 查找

    我对矢量查找与地图查找感到好奇 并为它编写了一个小测试程序 它看起来矢量总是比我使用它的方式更快 这里还有什么我应该考虑的吗 测试是否有任何偏差 运行的结果在底部 以纳秒为单位 但 gcc 在我的平台上似乎不支持它 使用字符串进行查找当然会
  • NSTextView 中插入符号下方的 NSPopover

    我知道为了显示弹出窗口 我需要一个 NSView 但我不认为有一个与插入符号相关联 在 NSTextView 内部 有没有办法在插入符号下方显示 NSPopover 我尝试分配 NSView 并使用它定位它 NSRect boundingR
  • 阻止直接访问 php 脚本,但允许从 index.html

    我有一个简单的联系表单 用户在其中输入数据 表单将其发送到 mail php 以传递到那里的电子邮件帐户 mail php 文件与 index html 一起位于我的根目录中 我遇到的问题是我不希望用户能够访问http mydomain c