为啥添加 CSS 后我的 PHP 代码中没有显示错误消息?

Posted

技术标签:

【中文标题】为啥添加 CSS 后我的 PHP 代码中没有显示错误消息?【英文标题】:Why the error message is not showing in my PHP code after adding CSS?为什么添加 CSS 后我的 PHP 代码中没有显示错误消息? 【发布时间】:2020-11-09 01:39:09 【问题描述】:

我为我的网站的评论部分编写了这段代码。但这是假设当任何人输入不正确的电子邮件或空评论时,会在“*”符号旁边显示错误消息。它做得很好,但是在我添加了 CSS 样式后它就不起作用了。

我正在读取输入并将其传递给 php。在 PHP 检查之后,我将其保存到评论文件夹中。否则,如果格式错误,我会给出错误消息。但是现在由于某种原因没有显示错误消息。

在主机上运行的代码链接https://cryptocrack.000webhostapp.com/comment/test/index.php

<!DOCTYPE html>  
<html>
   <head>
      <meta charset="UTF-8" name="viewport" content="width=device-width , initial-scale=1.0">
      <link rel="stylesheet" href="styles.css">
   </head>
   <body>
      <div class="wrapper">
         <div class="title">
            <h2>Leave a comment</h2>
         </div>
         <div class="contact-form">
            <div class="input-fields">
               <p><span class="error">* required field</span></p>
               <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
                  <input type="text" name="name" class="input" placeholder="Name" value="<?php echo $name;?>">
                  <span class="error">* <?php echo $nameErr;?></span>
                  <br><br>
                  <input type="text" name="email" class="input" placeholder="Email Address" value="<?php echo $email;?>">
                  <span class="error">* <?php echo $emailErr;?></span>
                  <br><br>
            </div>
            <div class="msg">
            <textarea name="comment" placeholder="Comment"><?php echo $comment;?></textarea>
            <span class="error">* <?php echo $commentErr;?></span>
            <br><br>
            <input type="submit" name="submit" class="btn" value="Submit">
            </div>
            </form>
         </div>
      </div>
      <div class="cm">
         <div class="tl">
            <h1>Comments</h1>
         </div>
         <br><br>
         <?php
            // define variables and set to empty values
            date_default_timezone_set("Asia/Dhaka");
            
            $nameErr = $emailErr = $commentErr = "";
            $name = $email = $comment = "";
            
            if ($_SERVER["REQUEST_METHOD"] == "POST") 
              if (empty($_POST["name"])) 
                $nameErr = "Name is required";
               else 
                $name = test_input($_POST["name"]);
                // check if name only contains letters and whitespace
                if (!preg_match("/^[a-zA-Z ]*$/",$name)) 
                  $nameErr = "Only letters and white space allowed";
                
              
              
              if (empty($_POST["email"])) 
                $emailErr = "Email is required";
               else 
                $email = test_input($_POST["email"]);
                // check if e-mail address is well-formed
                if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
                  $emailErr = "Invalid email format";
                
              
            
              if (empty($_POST["comment"])) 
                $commentErr = "Comment is required";
               else 
                $comment = test_input($_POST["comment"]);
              
                
                if($nameErr==""&&$emailErr==""&&$commentErr=="")
                    $cd=date("d.m.Y l h:i:s a");
                    $d=(string)mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y"));
                    $cf = fopen(getcwd()."/comments/".$d.".txt", "w");
                    fwrite($cf, $name."\n");
                    fwrite($cf, $cd."\n");
                    fwrite($cf, $email."\n");
                    fwrite($cf, $comment);
                    fclose($cf);
                
                
            
            
            function test_input($data) 
              $data = trim($data);
              $data = stripslashes($data);
              $data = htmlspecialchars($data);
              return $data;
            
            
            $dir=getcwd()."/comments/";
            $cm = scandir($dir,1);
            $len = count($cm)-2;
            
            for($i=0;$i<$len;$i++)
                $f=fopen($dir.$cm[$i],"r");
                echo "<div class=\"name\">" .fgets($f)."</div><div class=\"date\">".fgets($f)."</div><div class=\"email\">".fgets($f)."</div><br>";
                while(!feof($f))
                    echo fgets($f)."<br>";
                
                echo "<br><br>";
            
            
            ?>
      </div>
   </body>
</html>

【问题讨论】:

您发布的代码中没有 CSS。 在设置 $nameErr$emailErr 之前,您正在回显它们。 无关:why while (!feof($f)) is wrong 谢谢@Barmar 伙计。有效!我得救了。 【参考方案1】:
<?php if(isset($nameErr)) echo $nameErr;  ?>

用那个代替

 <?php echo $nameErr;?>

你得到错误,因为变量没有定义。

【讨论】:

还是没有运气:'(

以上是关于为啥添加 CSS 后我的 PHP 代码中没有显示错误消息?的主要内容,如果未能解决你的问题,请参考以下文章

为啥用css中伪类hover实现(鼠标悬停显示文字,鼠标移走文字消失)的效果失败(脚本没有错)?

为啥将 ViewModel 添加到我的 SwiftUI 应用程序后我的 UI 没有更新?

为啥显示键盘后我的滚动不起作用?

添加自定义css后我的标志消失了,如何解决?

为啥添加单个实体后我的核心数据需要很长时间才能保存?

为啥我的jquery代码在apache运行时候没有显示