php $ _GET - 澄清

som*_*dow 0 php conditional-statements

所以我有一个表单,当用户按下提交时,表单将它们抛出到处理文件,如果这些字段值中的任何一个值不验证,那么该进程表单将用户发送回它们来自的页面.我认为添加一条告诉他们错误的消息是有用的.....

例如,表单页面(contact.php)构造如下(下面)

<?php 
$errormssg = stripslashes(str_replace("'","",$_GET['errormssg']));
if($errormssg){
    echo $errormssg;    
} 
?>
<html>
<form fields here >
</html>
Run Code Online (Sandbox Code Playgroud)

并且php进程表单的构造或多或少像这样(下面)

<?php 

<form validation code goes here and if it fails, then throws them back to form page exactly 
like this (below)

header("Location:contact.php?errormssg='You seem to have forgotten one of the fields'");



?>
Run Code Online (Sandbox Code Playgroud)

我得到的问题是,当我第一次加载联系页面时,我得到一个错误,我将假设是因为当首次加载联系页面时,$_GET['errormssg']不存在.

香港专业教育学院尝试过像

if($_GET['errormssg']){
    echo $errormssg;
}
Run Code Online (Sandbox Code Playgroud)

还是错误,我是以错误的方式解决这个问题吗?

所有我实际上都试图做的是,当联系页面加载时,错误消息将向消息吐出的唯一方式是用户是否从处理表单发回.因此,如果消息存在,则在指定区域回显它,否则不显示任何内容.

我怎样才能做到这一点??提前致谢.

koo*_*jah 5

您需要首先检查是否定义了值:

if (isset($_GET) && isset($_GET['errormssg'])) {
    echo $_GET['errormssg'];
}
Run Code Online (Sandbox Code Playgroud)

编辑:根据MrCode $ _GET现在总是被定义.当我从那时起学习PHP并且从那时起就没有失去这种习惯,对此感到困惑.你不需要if的第一部分

  • `isset($ _ GET)`毫无意义.它始终设置,但它可能包含也可能不包含任何元素. (3认同)