HTML/PHPフォームはPOSTデータを送信していません
登録ページを作成するときに、非常に苛立たしい問題に遭遇しました。 送信ボタンを使用してフォームを送信すると、「user = myusername」のようにブラウザに送信されているのがわかりますが、PHP部分はフォームをまったく取得していません。 「echo」と「print_r」を使用してデバッグを試みましたが、どちらも空でしたが、zPanelからエラーログを取得しています。
コードのPHP部分は次のとおりです:
if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))
{
$username = $_POST["user"];
$password = $_POST['pw'];
$email = $_POST["mail"];
$ipaddress = $_SERVER["REMOTE_ADDR"];
if(empty($username) || empty($password) || empty($email)) header("Location: register.php?empty");
else if(user_exists($username)) header("Location: register.php?exist");
else if(email_exists($email)) header("Location: register.php?mailexist");
else if($password != $repeat_pass) header("Location: register.php?wrongpw");
else
{
register($username,$password,$ipaddress,$email);
header("Location: register.php?registrationsuccess");
exit();
}
}
そして、これが上記をトリガーするHTML部分です:
<form>
<div>
<label for="username" class="control-label" style="color: #666; position: absolute; top: 110px;">Username</label>
<div class="input-group" style="margin-left: 100px; margin-top: 8px; width: 300px;">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
<input type="text" name="user" class="form-control" placeholder="Username" required>
</div>
<br/>
<label for="password" class="control-label" style="color: #666; position: absolute; top: 163px;">Password</label>
<div style="margin-left: 100px; width: 300px;" class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" name="pw" class="form-control" placeholder="Password" required>
</div>
</br>
<label for="email" class="control-label" style="color: #666; position: absolute; top: 220px;">Email</label>
<div style="margin-left: 100px; width: 300px;" class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-import"></span></span>
<input type="text" name="mail" class="form-control" placeholder="E-mail" required>
</div>
<div class="btn-group" style="position: absolute; top: 265px; left: 125px;">
<button type="submit" class="btn btn-default" style="width: 300px; font-size: 18px;">Register</button>
</form>
はい、これはブートストラップを使用します。 これで、ログインしようとすると、実際にはregister.php?emptyにリダイレクトされ、フィールドに何も入力されていないことが示されます。
そしてこれがzPanelが私に吐き出すものです:
[error] PHP Notice: Undefined index: username
[エラー]PHP通知:未定義のインデックス:パスワード [エラー]PHP通知:未定義のインデックス:メール
正直なところ、何がこの問題を引き起こしているのかわかりません。 何かが恋しかったですか?
答え :
解決策:
まず、フォームの方法を明確にしませんでした。 <form method="POST">
である必要があります。
その後、変更する必要があります
if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))
TO
if(isset($_POST['user']) && isset($_POST['pw']) && isset($_POST['mail']))
それでうまくいくと思います。教えてください。
ありがとうございます。
答え :
解決策:
このようにコードを変更します...
if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))
{
$username = $_GET["user"];
$password = $_GET['pw'];
$email = $_GET["mail"];
$ipaddress = $_SERVER["REMOTE_ADDR"];
if(empty($username) || empty($password) || empty($email)) header("Location: register.php?empty");
else if(user_exists($username)) header("Location: register.php?exist");
else if(email_exists($email)) header("Location: register.php?mailexist");
else if($password != $repeat_pass) header("Location: register.php?wrongpw");
else
{
register($username,$password,$ipaddress,$email);
header("Location: register.php?registrationsuccess");
exit();
}
}
HTMLは次のようになります...
<form method="GET" action="action_page_name.php">
<div>
<label for="username" class="control-label" style="color: #666; position: absolute; top: 110px;">Username</label>
<div class="input-group" style="margin-left: 100px; margin-top: 8px; width: 300px;">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
<input type="text" name="user" class="form-control" placeholder="Username" required>
</div>
<br/>
<label for="password" class="control-label" style="color: #666; position: absolute; top: 163px;">Password</label>
<div style="margin-left: 100px; width: 300px;" class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" name="pw" class="form-control" placeholder="Password" required>
</div>
</br>
<label for="email" class="control-label" style="color: #666; position: absolute; top: 220px;">Email</label>
<div style="margin-left: 100px; width: 300px;" class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-import"></span></span>
<input type="text" name="mail" class="form-control" placeholder="E-mail" required>
</div>
<div class="btn-group" style="position: absolute; top: 265px; left: 125px;">
<button type="submit" class="btn btn-default" style="width: 300px; font-size: 18px;">Register</button>
</form>
PHPでさらに開発を進める前に、GETとPOSTの違いを理解しておく必要があります。
答え :
解決策:
PHP-HTMLでデータを送信するときは、' <form>
のメソッドプロパティを使用する必要があります。 method属性は、form-dataの送信方法を指定します(form-dataはaction属性で指定されたページに送信されます)。
form-dataは、URL変数(method = "get"を使用)またはHTTP post trans action(method = "post"を使用)として送信できます。 {-code-1 }
次のようなGET/POSTメソッドについて言及する必要があります
<form method="GET">
また、データを別のページに送信する場合は、 action
属性を設定する必要があります。それ以外の場合は、 action = ""
。
答え :
解決策:
フォームにメソッドとアクションがありません。アクションは、データを受信して処理するファイルです。メソッドは、フォームがデータを送信する方法です。
<form method="POST" action="file.php">
答え :
解決策:
ボタンsubmit
にname
を追加する必要があります:
その後、 isset
submitボタンを確認します:
if(isset($ _ POST ['submit']){
//ここにコードを入力してください
}
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。