私はちょうどPHPを学び始めました。ユーザーがフォームでSubmitをクリックすると、$ _SERVER ["PHP_SELF"]を使用して同じページにリダイレクトするときにこの問題に直面しています。問題は、私がPHPのスクリプトで使用したページの$ _POST []変数です。これは、ユーザーが[Submit]をクリックしてページをリロードした後にアクセスする必要があります。しかし、最初の実行時に、ユーザーがSubmitをクリックしていないときは、$ _POST変数は空であり、ページ自体にエラーが表示されています。もちろん、ユーザーが[送信]と[ページの再読み込み]をクリックしてもエラーは発生しません。送信後に別のページにリダイレクトしたくありません。最初の実行時にこれらのエラーを回避するにはどうすればよいですか?PHP_SELFは初回実行時にエラーを表示します
私がやろうとしていることに対してより良いアプローチがありますか?
私のページのコードはここにある:
<!DOCTYPE html>
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h3> Welcome!</h3>
</br></br>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" >
First Name: <input type="text" name="fname"> </br></br>
Last Name: <input type="text" name="lname"> </br></br>
Age: <input type="number" name="sage"> </br></br>
<input type="submit" value="Submit"></br></br>
</form>
<?php
$servername = "localhost";
$username = "user1";
$password = "abcd123";
$dbname = "myDbFromPhp";
$fname = $_POST["fname"]; /*Lines responsible for the errors, I think*/
$lname = $_POST["lname"];
$sage = $_POST["sage"];
if($fname != "" and $lname != "") /*Checking for empty vars*/
{
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error)
{
die("Connection failed: ".$conn->connect_error);
}
echo "<h4>Connected successfully</h4>";
$sql = "INSERT INTO Students
(fname, lname, sage)
VALUES
('".$fname."','".$lname."',".(string)$sage.");" ;
if($conn->query($sql) === TRUE)
{
echo "<h4>Value entered successfully</h4>";
}
else
{
echo "</br>Error creating record</br>".$conn->error;
}
$conn->close();
}
?>
</body>
</html>
ページには、単にユーザー(学生:姓、名、年齢)からいくつかの入力を受け取り、ユーザーがクリックを送信すると、リロードして保存しますデータベースに転送する。ページの