私はユーザーのための登録を作成しています。ユーザー名がすでにデータベースに存在する場合、プログラムはメッセージを表示する必要があります。それは動作しますが、なぜプログラムがメッセージを初めて表示しないのか分かりません。たとえば、michaelという名前が既に登録されていて、再度入力しようとすると、「ユーザー名は既に存在します」というメッセージは表示されません。しかし、もう一度やり直すと表示されます。または既に登録されている別の名前で試してみると表示されます。しかし、初めてではなく、2回目以降。私を手伝ってくれますか。データベースメッセージにユーザーが既に存在しています
<?php
session_start();
if(!isset($_SESSION['$k'])) {
$_SESSION['$k'] = false;
}
?>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="register.css">
<title>Word Games Register</title>
</head>
<body>
<form action="" method="POST">
<a href="../index.php"><img src="../img/close.png" /></a>
<h2>REGISTRARSE</h2>
<input type="text" placeholder="Usuario" name="user">
<input type="password" placeholder="Contraseña" name="password">
<input type="text" placeholder="E-mail" name="email">
<?php
if($_SESSION['$k']) {
echo '<h5 id="mensaje">El usuario ya existe</h5>';
unset($_SESSION['$k']);
}
?>
<input type="submit" value="Enviar" name="btn">
</form>
</body>
</html>
<?php
if(isset($_POST['btn'])){
$user = $_POST['user'];
$pass = $_POST['password'];
$email = $_POST['email'];
$link = mysqli_connect("localhost", "root", "") or die ("Error conectando al servidor" . mysqli_error());
mysqli_select_db($link, "wordgames") or die ("Error seleccionando la base de datos" . mysqli_error());
mysqli_query($link, "SET NAMES 'utf8'");
$resultado = mysqli_query($link, "select * from usuario where usuario='$user'") or die ("Error en la consulta" . mysqli_error());
$filas = mysqli_num_rows($resultado);
if($filas > 0){
$_SESSION['$k'] = true;
} else{
mysqli_query($link, "insert into usuario values (NULL, '$user', '$pass', '$email')") or die ("Error en la consulta". mysqli_error());
mysqli_close($link);
header("location:../index.php");
}
}
?>
データベースをチェックしてライブを更新するには、ajaxコールを実行する必要があります。 – DevDonkey
それはすばらしいことですが、厳密には必要ではありません。 – Rick
簡単で一般的なトラブル。 PHPをマニュアルで実行すると、POST文脈では、最初にHTMLを表示し(セッションセットがないので)、$ _POSTを解析して、すでにあなたのSESSIONをtrueに設定します。それ以外は何もないので、あなたのHTMLはエラーメッセージなしで既にビルドされています。リフレッシュするときに表示されるのは、SESSIONに格納されているからです。 HTMLテキストをエコーする前に、常にPHPの処理を行ってください。うまくいきます。 PHPの部分を最初に置く場合は、SESSIONを行う必要はありません。 – niconoe