类似的 PHP 表单代码:如果 $_REQUEST 为空,第一个抛出错误,第二个则不抛出错误

2024-05-09

我是 PHP 新手,所以这可能是一个简单的答案。希望我能正确地按照 SO 标准格式化它(对于该网站来说仍然是新的。)

我正在通过 SitePoint 编写两组非常相似的代码,提交表单数据并使用 htmlspecialchars 来阻止 XSS 攻击。很简单,对吧。

使用代码集 1 时,一旦我将表单操作更改为未定义索引,就会出现未定义索引的错误

<form action="formpost.php" method="post">

to

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

我搜索了一下,发现我需要检查是否$_REQUEST是否为空,以便不存在未定义的索引并消除该错误。如果有人可以向我解释这一部分,我将非常感激。某物需要落在什么范围内才能成为一个Index? 大声思考,请不要取笑我,我知道我可能听起来很愚蠢-->是不是一个Index因为$_REQUEST成为一个$_POST, $_GET and $_COOKIE是一个数组,数组中的数据是indexed, 0,1,2,3,etc.?

我明白$_REQUEST可能为空,因为没有$_REQUEST已经完成(我想?)但是,由于没有通过在表单中​​输入数据来激活脚本,为什么它会期望数据已经存在$_REQUEST?

代码集 1(除非脚本检查是否存在,否则会抛出错误 [未定义索引]$_REQUEST是空的): 在此代码中,我只是允许最终用户通过表单字段或通过手动添加到 URL 的字符串发布其姓名并打印。

<?php
if( !empty($_REQUEST) )
{
    $firstname = $_REQUEST['firstname'];
    $lastname = $_REQUEST['lastname'];
    echo 'Welcome to our web site, ' .
        htmlspecialchars($firstname, ENT_QUOTES, 'utf-8') . ' ' .
        htmlspecialchars($lastname, ENT_QUOTES, 'utf-8') . '!';
}
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Query String Link Example</title>
    </head>

    <body>
        <p>
            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
              <div><label for="firstname">First name:  
                <input type="text" name="firstname" id="firstname"></label>  
              </div>  
              <div><label for="lastname">Last name:  
                <input type="text" name="lastname" id="lastname"></label></div>  
              <div><input type="submit" value="GO"></div>  
            </form>
        </p>
    </body>
</html>

代码集 2(不介意是否$_REQUEST是否检查): 在这段代码中,我正在做同样的事情,只是如果它恰好是我的名字,让它打印出一条特殊的消息。

<?php
    $firstname = $_REQUEST['firstname'];
    $lastname = $_REQUEST['lastname'];
        if ($firstname == 'Tommy' && $lastname='Loza') 
        {
            echo 'Welcome to our web site web master!';
        }
        else
        {
            echo 'Welcome to our web site, ' .
                htmlspecialchars($firstname, ENT_QUOTES, 'utf-8') . ' ' .
                htmlspecialchars($lastname, ENT_QUOTES, 'utf-8') . '!';
        }
?>
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Conditional Query String Link Example</title>
    </head>

    <body>
        <p>
            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
              <div><label for="firstname">First name:  
                <input type="text" name="firstname" id="firstname"></label>  
              </div>  
              <div><label for="lastname">Last name:  
                <input type="text" name="lastname" id="lastname"></label></div>  
              <div><input type="submit" value="GO"></div>  
            </form>
        </p>
    </body>
</html>

希望我没有问太多愚蠢的问题,并且这篇文章的格式正确。非常感谢社区。

Tommy


基本上,除非 REQUEST 索引存在,否则您无法访问它。

如果不使用 if 语句,它将尝试访问索引,无论它是否存在。因此,如果 $_REQUEST['firstname'] 不存在,则不会默认为 null,而是会给出未定义索引错误,因为 $_REQUEST 是一个数组。

如果您尝试使用未定义的变量,它会显示“未定义变量”而不是“索引”。

['firstname']

检查它是否为空也不一定是唯一的事情。我还要检查名字和姓氏是否已设置,如下所示:

if(!empty($_REQUEST) && isset($_REQUEST['firstname']) && isset($_REQUEST['lastname'])){
    //Code here
}

当然,您可以单独检查它们是否能够根据缺少的任何一个错误抛出单个错误。

--Edit

此外,您还可以执行以下操作:

if($_SERVER['REQUEST_METHOD'] == "POST"){
    //code
}

默认情况下,它设置为“GET”。

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

类似的 PHP 表单代码:如果 $_REQUEST 为空,第一个抛出错误,第二个则不抛出错误 的相关文章

  • 使用 ImageMagick (PHP) 将 2 个图像并排合并为 1 个图像

    我认为这是一件容易的事 我有 2 张图片 JPG 我希望它们合并成一张图片 其中 2 张图片并排 所以我有图片 A 和图片 B 我想要图片 AB 并排 两个图像具有相同的宽度和高度 在本例中 宽度 200px 高度 300px 但是第二个图
  • 正则表达式上的换行符

    我试图替换两个标签之间的所有内容 但我无法构建正确的表达式 这就是我所做的
  • 选择一组数字以达到最小总数的算法

    给定 一组数字n 1 n 2 n 3 n x 还有一个数字M 我想找到最好的组合 n a n b n c n gt M 该组合应达到达到或超过 M 所需的最小值 没有其他组合可以提供更好的结果 将在 PHP 中执行此操作 因此可以使用 PH
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 尝试使用 php 发送 POST 请求,无论我做什么,我都会收到“HTTP ERROR 500”

    为了发出 HTTP 请求 有人建议我尝试使用 PHP 并给了我一段代码 url https example com dashboard api data array to gt PHONE NUMBER from gt SENDER ID
  • laravel - 使用请求类或输入类

    在宁静的控制器中 我应该使用哪个类来获取传递的变量 member gt email Input get email or member gt email Request get email 两种选择都适合我 但有什么区别 Input get
  • 如何隐藏 URL 中的锚标记

    如何隐藏地址栏中以下链接 href 的哈希值 a href index php dev name 所以它会将我重定向到index php dev name 但我希望地址栏只显示index php 您可以使用 Javascript oncli
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • PHP 无法加载动态库“php_pdo_oci.dll”

    我在 Windows 8 上运行 Apache 2 4 7 和 PHP 5 5 9 我安装了 PHPUnit 并开始弹出此警告图像 警告 是的 我在 php ini 中启用了扩展加载以及 extension dir 以更正文件夹 并且该文件
  • 未传递“client_reference_id”参数

    我使用 Stripe Checkout Stripe 版本 2016 07 06 我想通过参数 client reference id 恢复个性化数据 但在 JSON 中 当我有金额或电子邮件时 我找不到它 我是在测试环境中 你能帮我吗 先
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • Codeigniter - 出现 404 Not Found 错误

    我们在 godaddy 有两个托管套餐 我们的实时网站使用以下 htaccess 文件运行良好 无需在 url 中使用 index php 即可访问网站 RewriteEngine On RewriteCond REQUEST FILENA
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • 反向引用在 PHP 中不起作用

    最近我一直在研究 更多的是在实践中说实话 正则表达式 我注意到他的力量 我提出的这个要求 link https stackoverflow com questions 30380397 take the text up to a speci
  • PHP递归遍历对象树[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 crypt() 加密

    我目前正在做一个非常安全的登录系统 但我是 crypt 函数的新手 需要一些快速帮助 我在注册过程中使用 crypt 加密密码字符串并将其保存到数据库中 但是 我如何在登录过程中解密密钥 或者我应该怎么做 或者是否可以对提交的密码字符串进行

随机推荐

  • 如何在.NET中扩展环境变量%CommonProgramFiles%\system\

    我遇到一种情况 我需要通过读取注册表设置来返回目录路径 注册表值返回我以下格式的路径 CommonProgramFiles System web32 dll 而消费者代码期望它的格式为 C Program Files Common File
  • ServerSOAPFaultException 以及如何读取它?

    我做了一个请求 我的程序吐出来了 WARNING Input Action on WSDL operation Search and Action on its associated Web Method search did not ma
  • 如何设置itemTouchHelper选择性滑动?

    所以我在 recyclerview rv 上实现了这个 itemtouchhelper simple 回调 现在 在这个 rv 中 我根据内容类型将 2 种布局设置为一行 因此 当我在 rv 上设置此 touchhelper 时 它正在这两
  • 尽早访问控件 | load 与 domready

    我最近访问 jsfiddle net 发现这是一个配置选项 这让我想到这可能有助于解决我遇到的问题 我加载了多个图像 尚未升级到单个精灵 因此在它们全部下载之前我无法使用我的控件 图像占用了大部分下载时间 因此在最初几秒钟我无法访问我的控制
  • 在模型中的方法中捕获异常时重定向

    我正在使用 Authlogic connect 连接各种服务提供商 user rb中有一个方法 def complete oauth transaction token token class new oauth token and sec
  • 应用程序启动时立即隐藏导航栏

    基于以下代码片段 我能够隐藏状态栏当应用程序启动时 但不是导航栏 由后退 主页和任务管理器按钮组成的栏 因为它隐藏了稍后在 MainActivity 的线程完成加载后 这是清单
  • 错误:在 Java 中声明布尔值时不是一个语句

    下面的代码 boolean continue false 返回以下错误 error not a statement boolean continue false 为什么会发生这种情况 我对布尔值非常熟悉 试试这个 boolean cont
  • 有谁知道 Java 中有一个可以解析 ESRI Shapefiles 的库吗?

    我有兴趣为道路数据编写可视化程序2009 Tiger Line 形状文件 http www census gov geo www tiger tgrshp2009 documentation html 我想绘制线路数据来显示我所在县的所有道
  • java.sql.SQLException:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我已尝试使用以下代码来检索存储在数据库中的图像 我创建了一个名为image db包含一个名为的表image details 该表有两个字段 id and image path两者都是类型mediumblob 我在
  • env 配置文件中未初始化的常量 ActiveSupport::EventedFileUpdateChecker

    我是 Ruby on Rails 的新手 运行 捆绑 命令进行更新 安装后 当我尝试执行以下操作时rails s or rails g mongoid config控制台返回以下消息开头 home myUser proyect config
  • Android 视图展开动画

    我正在尝试编辑这些来源 https github com gabrielemariotti androiddev tree master AnimationTest创建一个适用于我所有视图的简单函数 Override public void
  • xdotool 类型需要很长时间并导致整个桌面冻结

    我一直在使用xdotool type过去只能在快捷方式上输入耸肩xdotool type 这可行 但总是需要相当长的时间 并导致整个桌面冻结 完全冻结 而不仅仅是输入 几秒钟 不过并没有太打扰我 现在我需要一种方法来从文件中读取内容 对其进
  • Android ACTION_DATE_CHANGED 广播

    我有 Nexus S 当我在手机上手动更改日期时 ACTION DATE CHANGED 并不总是被广播 如果我将日期从 2014 年 2 月 13 日更改为 2014 年 2 月 14 日 我还没有获得 ACTION DATE CHANG
  • 禁用页面的浏览器打印选项(页眉、页脚、边距)?

    我在 SO 和其他几个网站上看到过以几种不同的方式提出这个问题 但大多数都太具体或过时了 我希望有人能在这里提供明确的答案 而不是迎合猜测 当有人在浏览器中打印时 有没有办法使用 CSS 或 javascript 更改默认打印机设置 当然
  • 熊猫滚动意味着更新

    考虑数据框 df pd DataFrame a None None None None 1 2 1 0 1 b 5 4 6 7 None None None None None gt gt a b 0 NaN 5 0 1 NaN 4 0 2
  • glBlitFramebuffer 渲染缓冲区和渲染全屏纹理哪个更快?

    哪个更快更高效 使用 OpenGL 纹理作为 CUDA 表面并在四边形上渲染 新样式 使用渲染缓冲区作为 CUDA 表面并使用 glBlitFramebuffer 进行渲染 None
  • 设置字节中的特定位

    我正在尝试设置 Java 字节变量中的位 它确实提供了适当的方法 例如 setBit i 有谁知道我如何才能实现这一点 我可以按位迭代给定的字节 if my byte 1 lt lt i 0 但是我不能将此位置设置为 1 或 0 可以吗 使
  • 在composer.json中运行命令行命令

    我正在尝试编写一个composer json 文件 该文件将连续运行多个命令行命令 作为一个示例 如下所示 scripts test createDir createDir mkdir testing 当我在终端中运行作曲家文件时使用com
  • 使用 javascript 选择框架上下文

    有没有一种方法可以使用 Javascript 以编程方式选择框架上下文 假设当前网页中有两个不同的框架 我需要将 hello 附加到第二个框架 问题是第二个框架的域与当前网页不同 使用 Chrome 开发者工具 我可以简单地选择第二个框架上
  • 类似的 PHP 表单代码:如果 $_REQUEST 为空,第一个抛出错误,第二个则不抛出错误

    我是 PHP 新手 所以这可能是一个简单的答案 希望我能正确地按照 SO 标准格式化它 对于该网站来说仍然是新的 我正在通过 SitePoint 编写两组非常相似的代码 提交表单数据并使用 htmlspecialchars 来阻止 XSS