PHP文件之间的消息


Messages between PHP files

我有两个PHP文件,index.phpinsert.php

  • index.php-一个表单和一个发送数据的按钮
  • insert.php-接收表单的值,将它们插入数据库中,它就可以工作了

当我重定向到index.php时,它会显示一条成功的消息。

我在index.php中有这个代码来显示消息:

<?php
   $mensaje=$_GET['mensaje'];
   if($mensaje=="")
      {
      }
   else
      {
         echo "¡Registro exitoso!";
      }
?>

但当我第一次打开它时,它显示我:

Notice: Undefined index: mensaje in C:'xampp'htdocs'..'index.php on line 41

如何仅在插入后显示消息?

像这样:

$mensaje = isset($_GET['mensaje']) ? $_GET['mensaje'] : "";

这样,$mensaje就永远不会被定义。


三元运算符是这样工作的:

$mensaje = if($_GET['mensaje'] exists) then $mensaje = $_GET['mensaje'], else $mensaje = "";

这就像在做:

if(isset($_GET['mensaje'])){
    $mensaje = $_GET['mensaje'];
}
else
    $mensaje = "";
}

有关三元运算符的更准确信息:

http://en.wikipedia.org/wiki/%3F:

有关功能"isset"的信息:

http://php.net/manual/en/function.isset.php

发生这种情况是因为$_GET['mensaje']不仅是空的,而且根本不存在
要解决此问题,请更换

$mensaje = $_GET['mensaje'];

通过

$mensaje = empty($_GET['mensaje'])? "": $_GET['mensaje'];

因此,如果$_GET['mensaje']为空或未设置,则分配一个空字符串""

$mensaje真的是空的吗(正如if条件所暗示的那样),还是在$_GET中简单定义或未定义(正如文本描述所暗示的)?如果是后者,则您的解决方案是测试存在性,而不是内容:

<?php
if( isset($_GET['mensaje']) )
{
    echo "¡Registro exitoso!";
}
else
{
}
?>

isset()是一个语言构造,而不是函数。这就是为什么它可以用来测试数组索引的存在,而不必在索引不存在时抛出"未定义索引"通知的原因。

提示(仅为完整性):
如果数组元素的值为NULL,isset()也将返回False。但这在$_GET的情况下是无关紧要的,因为它总是并且只包含字符串值。