Php 正在尝试使用if!设置为显示不带表单的结果

Php 正在尝试使用if!设置为显示不带表单的结果,php,forms,Php,Forms,我试图在不同时显示表单的情况下显示结果。因此,最初当他们转到URL时,他们会看到表单,填写表单后,表单验证和必填字段以及URL有效。这是我开始的 <!DOCTYPE HTML> <html> <head> <style> .error {color: #FF0000;} </style> </head> <body> <?php // define variables and set to emp

我试图在不同时显示表单的情况下显示结果。因此,最初当他们转到URL时,他们会看到表单,填写表单后,表单验证和必填字段以及URL有效。这是我开始的

<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>  

<?php
// define variables and set to empty values
$TXTlinknameErr = $TXTurlErr = "";
$TXTlinkname = $TXTurl = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["TXTlinkname"])) {
    $TXTlinknameErr = "Name is required";
  } else {
    $TXTlinkname = test_input($_POST["TXTlinkname"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$TXTlinkname)) {
      $TXTlinknameErr = "Only letters and white space allowed"; 
    }
  }

  if (empty($_POST["TXTurl"])) {
    $TXTurl = "";
  } else {
    $TXTurl = test_input($_POST["TXTurl"]);
    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$TXTurl)) {
      $TXTurlErr = "Invalid URL"; 
    }
  }

  if (empty($_POST["TXTurl"])) {
    $TXTurlErr = "URL is required";
  } else {
    $TXTurl = test_input($_POST["TXTurl"]);
  }
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

<h2>Create HTML Link</h2>
<p><span class="error">* required field</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Name: <input type="text" name="TXTlinkname" value="<?php echo $TXTlinkname;?>">
  <span class="error">* <?php echo $TXTlinknameErr;?></span>
  <br><br>
  URL: <input type="text" name="TXTurl" value="<?php echo $TXTurl;?>">
  <span class="error"><?php echo $TXTurlErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>

<?php
echo "<h2>Your HTML Code:</h2>";
echo "<br>";
echo '<textarea name="htmlcode" rows="10" cols="60"><a href="' . $TXTurl . '" target="_new">' . $TXTlinkname . '</a></textarea>';


?>

</body>
</html>
最后加上:

<?php

} ?> 
前/身

这是我试过的

<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>  
    <?php
    //If form not submitted, display form.
    if (!isset($_POST['submit'])||(($_POST['TXTlinkname'] && $_POST['TXTurl']) == "")){
    ?> 
    <?php
// define variables and set to empty values
$TXTlinknameErr = $TXTurlErr = "";
$TXTlinkname = $TXTurl = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["TXTlinkname"])) {
    $TXTlinknameErr = "Name is required";
  } else {
    $TXTlinkname = HTML_input($_POST["TXTlinkname"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$TXTlinkname)) {
      $TXTlinknameErr = "Only letters and white space allowed"; 
    }
  }

  if (empty($_POST["TXTurl"])) {
    $TXTurl = "";
  } else {
    $TXTurl = HTML_input($_POST["TXTurl"]);
    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$TXTurl)) {
      $TXTurlErr = "Invalid URL"; 
    }
  }

  if (empty($_POST["TXTurl"])) {
    $TXTurlErr = "URL is required";
  } else {
    $TXTurl = HTML_input($_POST["TXTurl"]);
  }
}

function HTML_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

<h2>Create HTML Link</h2>
<p><span class="error">* required field</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Name: <input type="text" name="TXTlinkname" value="<?php echo $TXTlinkname;?>">
  <span class="error">* <?php echo $TXTlinknameErr;?></span>
  <br><br>
  URL: <input type="text" name="TXTurl" value="<?php echo $TXTurl;?>">
  <span class="error"><?php echo $TXTurlErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>

<?php
} else {
echo "<h2>Your HTML Code:</h2>";
echo "<br>";
echo '<textarea name="htmlcode" rows="10" cols="60"><a href="' . $TXTurl . '" target="_new">' . $TXTlinkname . '</a></textarea>';
?>
    <button onclick="location = location.href">Go Back</button>
<?php

} ?> 
</body>
</html>
因此,最初当他们转到URL时,他们会看到表单,填写表单后,表单验证和必填字段以及URL有效。

试试这个:

if (!$_POST) || $_POST['TXTlinkname'] == "" && $_POST['TXTurl']) == "")){
试试这个:

if (!$_POST) || $_POST['TXTlinkname'] == "" && $_POST['TXTurl']) == "")){

你必须有一个变量来告诉你是否要显示文本区域

<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>  

<?php
// define variables and set to empty values
$TXTlinknameErr = $TXTurlErr = "";
$TXTlinkname = $TXTurl = "";

$show_textarea = false; //DEFAULT
if (isset($_POST['submit'])) { //The form is sent...
    $show_textarea = true; //Then this is DEFAULT!!
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  if (empty($_POST["TXTlinkname"])) {
    $show_textarea = false; //DON'T SHOW TEXTAREA
    $TXTlinknameErr = "Name is required";
  } else {

    $TXTlinkname = test_input($_POST["TXTlinkname"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$TXTlinkname)) {
      $show_textarea = false; //DON'T SHOW TEXTAREA 
      $TXTlinknameErr = "Only letters and white space allowed"; 
    }
  }

  if (empty($_POST["TXTurl"])) {
    $show_textarea = false; //DON'T SHOW TEXTAREA
    $TXTurl = "";
  } else {
    $TXTurl = test_input($_POST["TXTurl"]);
    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$TXTurl)) {
      $show_textarea = false; //DON'T SHOW TEXTAREA
      $TXTurlErr = "Invalid URL"; 
    }
  }

  if (empty($_POST["TXTurl"])) {
    $show_textarea = false; //DON'T SHOW TEXTAREA
    $TXTurlErr = "URL is required";
  } else {
    $TXTurl = test_input($_POST["TXTurl"]);
  }
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}


if ($show_textarea === false) {
?>
<h2>Create HTML Link</h2>
<p><span class="error">* required field</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Name: <input type="text" name="TXTlinkname" value="<?php echo $TXTlinkname;?>">
  <span class="error">* <?php echo $TXTlinknameErr;?></span>
  <br><br>
  URL: <input type="text" name="TXTurl" value="<?php echo $TXTurl;?>">
  <span class="error"><?php echo $TXTurlErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>    
<?php
}

if (isset($_POST['submit'])) { //The form is sent...
    if ($show_textarea === true ) { //...AND the form has valid values
        echo "<h2>Your HTML Code:</h2>";
        echo "<br>";
        echo '<textarea name="htmlcode" rows="10" cols="60">
        <a href="' . $TXTurl . '" target="_new">' . $TXTlinkname . '</a> 
        </textarea>';
    }
}

?>

</body>
</html>

你必须有一个变量来告诉你是否要显示文本区域

<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>  

<?php
// define variables and set to empty values
$TXTlinknameErr = $TXTurlErr = "";
$TXTlinkname = $TXTurl = "";

$show_textarea = false; //DEFAULT
if (isset($_POST['submit'])) { //The form is sent...
    $show_textarea = true; //Then this is DEFAULT!!
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  if (empty($_POST["TXTlinkname"])) {
    $show_textarea = false; //DON'T SHOW TEXTAREA
    $TXTlinknameErr = "Name is required";
  } else {

    $TXTlinkname = test_input($_POST["TXTlinkname"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$TXTlinkname)) {
      $show_textarea = false; //DON'T SHOW TEXTAREA 
      $TXTlinknameErr = "Only letters and white space allowed"; 
    }
  }

  if (empty($_POST["TXTurl"])) {
    $show_textarea = false; //DON'T SHOW TEXTAREA
    $TXTurl = "";
  } else {
    $TXTurl = test_input($_POST["TXTurl"]);
    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$TXTurl)) {
      $show_textarea = false; //DON'T SHOW TEXTAREA
      $TXTurlErr = "Invalid URL"; 
    }
  }

  if (empty($_POST["TXTurl"])) {
    $show_textarea = false; //DON'T SHOW TEXTAREA
    $TXTurlErr = "URL is required";
  } else {
    $TXTurl = test_input($_POST["TXTurl"]);
  }
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}


if ($show_textarea === false) {
?>
<h2>Create HTML Link</h2>
<p><span class="error">* required field</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Name: <input type="text" name="TXTlinkname" value="<?php echo $TXTlinkname;?>">
  <span class="error">* <?php echo $TXTlinknameErr;?></span>
  <br><br>
  URL: <input type="text" name="TXTurl" value="<?php echo $TXTurl;?>">
  <span class="error"><?php echo $TXTurlErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>    
<?php
}

if (isset($_POST['submit'])) { //The form is sent...
    if ($show_textarea === true ) { //...AND the form has valid values
        echo "<h2>Your HTML Code:</h2>";
        echo "<br>";
        echo '<textarea name="htmlcode" rows="10" cols="60">
        <a href="' . $TXTurl . '" target="_new">' . $TXTlinkname . '</a> 
        </textarea>';
    }
}

?>

</body>
</html>

我在代码中看到的最大问题是if语句。除非表单尚未提交,否则不会定义变量。我所做的更改是将函数与变量名一起全局定义,并反转if语句。PHP标记,您不需要到处都使用它们。一个包装就够了

我不确定你的结果是什么,但对于你所要求的,我将提供

<!DOCTYPE HTML>  
<html>
    <head>
        <style>
            .error {color: #FF0000;}
        </style>
    </head>
    <body>  
        <?php
            function HTML_input($data) {
              $data = trim($data);
              $data = stripslashes($data);
              $data = htmlspecialchars($data);
              return $data;
            }

            $TXTlinkname = $TXTurl = "";
            $TXTlinknameErr = $TXTurlErr = "";
            //If form not submitted, display form.
            if (isset($_POST['submit'])){
                if (empty($_POST['TXTurl'])) {
                    $TXTurlErr = "URL is required";
                } else {
                    $TXTurl = HTML_input($_POST['TXTurl']);
                    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
                    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$TXTurl)) {
                        $TXTurlErr = "Invalid URL"; 
                    }
                }

                if (empty($_POST['TXTname'])) {
                    $TXTlinknameErr = "Name is required";
                } else {
                    $TXTlinkname = HTML_input($_POST['TXTname']);
                    // check if name only contains letters and whitespace
                    if (!preg_match("/^[a-zA-Z ]*$/",$TXTlinkname)) {
                        $TXTlinknameErr = "Only letters and white space allowed"; 
                    }
                }
            }

            if (empty($TXTurlErr) && empty($TXTlinknameErr) && isset($_POST['submit'])) {
                echo "<h2>Your HTML Code:</h2>";
                echo "<br>";
                echo '<textarea name="htmlcode" rows="10" cols="60"><a href="' . $TXTurl . '" target="_new">' . $TXTlinkname . '</a></textarea>';
                echo '<button onclick="location = location.href">Go Back</button>';
            } else {
                echo '<h2>Create HTML Link</h2>
                <p><span class="error">* required field</span></p>
                <form method="post" action="'.htmlspecialchars($_SERVER["PHP_SELF"]).'">  
                  Name: <input type="text" name="TXTname" value="'.$TXTlinkname.'">
                  <span class="error">* '. $TXTlinknameErr .'</span>
                  <br><br>
                  URL: <input type="text" name="TXTurl" value="'.$TXTurl.'">
                  <span class="error">'.$TXTurlErr.'</span>
                  <br><br>
                  <input type="submit" name="submit" value="Submit">  
                </form>';
            }
        ?>
    </body>
</html>

在XAMPP上进行本地测试我发现代码的一个大问题是if语句。除非表单尚未提交,否则不会定义变量。我所做的更改是将函数与变量名一起全局定义,并反转if语句。PHP标记,您不需要到处都使用它们。一个包装就够了

我不确定你的结果是什么,但对于你所要求的,我将提供

<!DOCTYPE HTML>  
<html>
    <head>
        <style>
            .error {color: #FF0000;}
        </style>
    </head>
    <body>  
        <?php
            function HTML_input($data) {
              $data = trim($data);
              $data = stripslashes($data);
              $data = htmlspecialchars($data);
              return $data;
            }

            $TXTlinkname = $TXTurl = "";
            $TXTlinknameErr = $TXTurlErr = "";
            //If form not submitted, display form.
            if (isset($_POST['submit'])){
                if (empty($_POST['TXTurl'])) {
                    $TXTurlErr = "URL is required";
                } else {
                    $TXTurl = HTML_input($_POST['TXTurl']);
                    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
                    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$TXTurl)) {
                        $TXTurlErr = "Invalid URL"; 
                    }
                }

                if (empty($_POST['TXTname'])) {
                    $TXTlinknameErr = "Name is required";
                } else {
                    $TXTlinkname = HTML_input($_POST['TXTname']);
                    // check if name only contains letters and whitespace
                    if (!preg_match("/^[a-zA-Z ]*$/",$TXTlinkname)) {
                        $TXTlinknameErr = "Only letters and white space allowed"; 
                    }
                }
            }

            if (empty($TXTurlErr) && empty($TXTlinknameErr) && isset($_POST['submit'])) {
                echo "<h2>Your HTML Code:</h2>";
                echo "<br>";
                echo '<textarea name="htmlcode" rows="10" cols="60"><a href="' . $TXTurl . '" target="_new">' . $TXTlinkname . '</a></textarea>';
                echo '<button onclick="location = location.href">Go Back</button>';
            } else {
                echo '<h2>Create HTML Link</h2>
                <p><span class="error">* required field</span></p>
                <form method="post" action="'.htmlspecialchars($_SERVER["PHP_SELF"]).'">  
                  Name: <input type="text" name="TXTname" value="'.$TXTlinkname.'">
                  <span class="error">* '. $TXTlinknameErr .'</span>
                  <br><br>
                  URL: <input type="text" name="TXTurl" value="'.$TXTurl.'">
                  <span class="error">'.$TXTurlErr.'</span>
                  <br><br>
                  <input type="submit" name="submit" value="Submit">  
                </form>';
            }
        ?>
    </body>
</html>


在XAMPP上进行本地测试

如果需要,请尝试!isset$_POST['submit']{检查基本结构不,不起作用。@JD抱歉,没有得到你想要做的。到目前为止,当我点击页面并提交并通过验证后,它会显示带有返回按钮的文本区域。另外,在你的else条件下有2个PHP通知。如果!isset$\u POST['submit',可能尝试一下{检查基本结构不,不起作用。@JD很抱歉,没有得到您想要做的事情。到目前为止,当我点击页面并提交并通过验证后,它会显示带有返回按钮的文本区域。另外,在您的else条件下有2个PHP通知。尝试了您的建议,得到了解析错误:语法错误,意外的“| |”T| BOOLEAN|或第11行您没有正确地关闭括号。请在发布之前检查您的代码。它会破坏其他用户的功能。我是php新手。您能告诉我括号哪里不正确,以及如何更正吗?尝试了您的建议,并获得解析错误:语法错误,意外的“|”T\u BOOLEAN\u或第11行您没有正确关闭括号。请在发布之前检查您的代码。它会破坏其他用户的功能。我是php新手。您能告诉我括号哪里不正确,以及如何更正吗?谢谢您的建议。我尝试过,但即使未通过验证,它也会显示文本区域。a哈,我没有正确理解你的问题…等等,我很快会更新。我现在更新了我的答案。我希望这是你想要的。再次更新。基本上只是在显示表单时做一个if条件。更新的代码不起作用…如果字段为空,它将进入文本区域,但如果表单已填写,它不会。一个u had up之前是最接近的,但它在同一页上显示表单和结果。我只希望结果文本区域显示表单是否成功提交并清除验证。感谢您的建议。我尝试过,但即使未通过验证,它也会显示文本区域。啊哈,我没有正确理解您的问题…等等,我很抱歉我很快就会更新。我现在更新了我的答案。我希望这就是你想要的。再次更新。它基本上只是在显示表单时执行一个if条件。更新的代码不起作用…如果字段为空,它会转到文本区域,但如果表单已填写,它不会。你之前看到的是最接近的,但它会显示表单和结果在同一页上。我只希望结果文本区域显示表单是否成功提交并清除验证。我感谢您的建议和反馈,@seavorld…如果字段是emply或无效的TXTlinknameErr,$TXTlinknameErr不显示。此外,如果没有验证,它仍然返回文本区域编辑效果几乎完美…例如当然,如果你只是转到表单URL开始。然后它会显示标题、结束正文和html标记。错过了这条船,但无论如何都修复了它:我感谢你的建议和反馈,@seavorld…如果字段是emply或无效的TXTlinknameErr,$TXTlinknameErr不显示。此外,如果没有有效编辑,它仍然返回textarea几乎完美…除非你只是转到表单URL开始。然后它会显示标题、结束正文和html标记。错过了 e船,但不管怎么说都把它修好了: