簡體   English   中英

PHP-會話錯誤消息未顯示

[英]PHP - Session error messages not showing

我有一個帶有聯系表格的頁面。 如果字段為空/無效,我試圖使一些錯誤消息出現在字段旁邊。 如果所有字段都正確,則該字段的內容將發送到數據庫。

驗證本身有效。 如果字段為空或無效,則不會將其提交到數據庫中。 但是,在字段旁邊未顯示任何錯誤消息。

這是代碼

帶有聯系表格的頁面名為palaute3.php:

<?php
session_start();



$_SESSION["nimiVirhe"]="";
$_SESSION["spostiVirhe"]="";
$_SESSION["palauteVirhe"]="";


$servername = "localhost";
$username = "username";
$password = "passwd";
$dbname = "dbname";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Game Over</title>
                <link href="https://fonts.googleapis.com/css?family=Press+Start+2P" rel="stylesheet">
                <link rel="stylesheet" type="text/css" href="tyyli1.css"/>
                <style type="text/css">
                @import url('https://fonts.googleapis.com/css?family=Press+Start+2P');
                </style> 
    </head>
    <body>



        <div id="container">

            <div id="header">
            </div>
            <div id="menuBG">
            </div>

            <ul class="navlist">
                <li><a href="index.html">Etusivu</a>
                </li>

                <li><a href="leffat.html">Leffat</a>
                </li>

                <li><a href="pelit.html">Pelit</a>
                </li>

                <li><a href="palaute.html" class="active">Ota yhteyttä</a>
                </li>

            </ul>




                <div id="content">



                <h3>Palaute</h3>
                    <p>Anna Palautetta sivujen ulkonäöstä tai vinkkejä uusiksi arvosteluiksi!</p>

                    <p><span class="error">Kaikki kentät ovat pakollisia</span></p>
                    <form method="post" action="validointi.php">
                    <table width="450px">
                        <tr>
                        <td valign="top">
                            <label for="nimi">Nimi</label>
                        </td>
                        <td valign="top"> 

                            <input type="text" name="nimi" /><span class="error"><?php echo $_SESSION["nimiVirhe"];?></span>
                        </td>
                        </tr>

                        <tr>
                        <td valign="top">
                            <label for="sposti">Sähköposti</label>

                        </td>
                        <td valign="top">
                            <input type="text" name="sposti" /><span class="error"><?php echo $_SESSION["spostiVirhe"];?></span>


                        </td>
                        </tr>

                        <tr>
                        <td valign="top">
                            <label for="palaute">Palaute</label>
                        </td>
                        <td valign="top">


                            <textarea  name="palaute" maxlength="1000" cols="30" rows="6"></textarea><span class="error"><?php echo $_SESSION["palauteVirhe"];?> </span>
                        </td>
                        </tr>

                        <tr>
                        <td colspan="2" style="text-align:center">
                        <input type="submit" value="Lähetä" name="submit">
                        </td>
                        </tr>


                        </table>

                    </form>
                    <?php
                    session_unset();
                    ?>







                    <p>
                    Palautteet tähän
                    </p>


<?php


$sql = "SELECT id, palaute FROM dbtable";


$result = mysqli_query($conn, $sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Palaute: " . $row["palaute"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();



 ?>






                </div>


                <div id="footer">
                    <p>© Game Over 2018 All rights reserved</p>
                </div>
        </div>
        </body>
</html>

這是驗證:

<?php
session_start();
 $_SESSION["nimiVirhe"]="";
 $_SESSION["spostiVirhe"]="";
 $_SESSION["palauteVirhe"]="";

if (isset($_POST['submit'])) {

   if (empty($_POST["nimi"])) {
     $_SESSION["nimiVirhe"] = " Nimi on pakollinen.";
   }
   else {
     $nimi = $_POST["nimi"];
     $_SESSION["nimi"]=$nimi;
     if (!preg_match("/^[a-zA-Z ]*$/",$nimi)) {
       $_SESSION["nimiVirhe"] = " Nimi on väärässä muodossa.";
     }
   }

   if (empty($_POST["sposti"])) {
        $sposti = $_SESSION["sposti"];
        $_SESSION["spostiVirhe"] = " Sähköposti on pakollinen.";
   } 
   else {
        $sposti = $_POST["sposti"];
        $_SESSION["sposti"]=$sposti;
        if (!filter_var($sposti, FILTER_VALIDATE_EMAIL)) {
            $_SESSION["spostiVirhe"] = " Sähköpostiosoite on väärässä muodossa.";
        }
   }

   if (empty($_POST["palaute"])) {
        $_SESSION["palauteVirhe"] = "<br>Palaute on pakollinen.";
   } 
   else {
        $palaute = $_POST["palaute"];
        $_SESSION["palaute"]=$palaute;
   }



    if($_SESSION["nimiVirhe"] == "" && $_SESSION["spostiVirhe"] == "" && $_SESSION["palauteVirhe"] == ""){
        header("Location: yhteystesti.php");
        return;
    } else {
        header("Location: palaute3.php");
        return;
    }



   }


?>

數據庫插入工作正常,因此我不在這里包括它。

知道我在做什么錯嗎?

PS:這是一次學校作業,老師試圖使其正常運行,但沒有成功。

在您的palaute3.php文件的頂部,您有此

$_SESSION["nimiVirhe"]="";
$_SESSION["spostiVirhe"]="";
$_SESSION["palauteVirhe"]="";

因此,在使用它們之前,您需要重新初始化會話錯誤消息。

這三行應該在驗證頁面中,而不是在錯誤頁面中!

刪除它,它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM