私はこの1週間これを解決しようとしてきましたが、運がありません。私がやりたいのは、ユーザーがドロップダウンメニューから選択した役割に基づいており、ユーザーはサイトの別のビューにリダイレクトされます。現在、サイトはユーザーに基づいてリダイレクトされていません。これは、register_handler.phpの65〜78行目のコードで処理され、ユーザーが選択した国もphpmyadminに保存されていないと思いました。考えられるすべての変数を追加/削除または変更しました(register_handlerの156行目を含み、下の図を含めました)が、それを機能させるために理解できません。私が犯しているエラーは変数と関係がある可能性が高いことを私は知っていますが、それを行う方法を知っています。また、私が追加しようとしているコードは、このガイドからのものです(http://form.guide/php-form/php-form-select.html/comment-page-1#comments)。よろしくお願いします!関連する両方のページのコードが含まれています。
散らかった、初めての投稿ならごめんなさい...
formCountryという名前のテーブルの新しい列の登録画面register_handler.php(追加: ``、)。
国選択フォーム
register.phpに追加したコード
<?php
require 'config/config.php';
require 'includes/form_handlers/register_handler.php';
require 'includes/form_handlers/login_handler.php';
?>
<html>
<head>
<title>Welcome to Countries!</title>
<link rel="stylesheet" type="text/css" href="assets/css/register_style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="assets/js/register.js"></script>
</head>
<body>
<?php
if(isset($_POST['register_button'])) {
echo '
<script>
$(document).ready(function() {
$("#first").hide();
$("#second").show();
});
</script>
';
}
?>
<div class="wrapper">
<div class="login_box">
<div class="login_header">
<h1>Countries!</h1>
Login or sign up below!
</div>
<br>
<div id="first">
<form action="register.php" method="POST">
<input type="email" name="log_email" placeholder="Email Address" value="<?php
if(isset($_SESSION['log_email'])) {
echo $_SESSION['log_email'];
}
?>" required>
<br>
<input type="password" name="log_password" placeholder="Password">
<br>
<?php if(in_array("Email or password was incorrect<br>", $error_array)) echo "Email or password was incorrect<br>"; ?>
<input type="submit" name="login_button" value="Login">
<br>
<a href="#" id="signup" class="signup">Need an account? Register here!</a>
</form>
</div>
<div id="second">
<form action="register.php" method="POST">
<label for='formCountry'>Select your country of residence</label><br>
<select>
<option value="">Select a country</option>
<option value="US">United States</option>
<option value="UK">United Kingdom</option>
<option value="France">France</option>
<option value="Mexico">Mexico</option>
<option value="Russia">Russia</option>
<option value="Japan">Japan</option>
</select><br>
<input type="text" name="reg_fname" placeholder="First Name" value="<?php
if(isset($_SESSION['reg_fname'])) {
echo $_SESSION['reg_fname'];
}
?>" required>
<br>
<?php if(in_array("Your first name must be between 2 and 25 characters<br>", $error_array)) echo "Your first name must be between 2 and 25 characters<br>"; ?>
<input type="text" name="reg_lname" placeholder="Last Name" value="<?php
if(isset($_SESSION['reg_lname'])) {
echo $_SESSION['reg_lname'];
}
?>" required>
<br>
<?php if(in_array("Your last name must be between 2 and 25 characters<br>", $error_array)) echo "Your last name must be between 2 and 25 characters<br>"; ?>
<input type="email" name="reg_email" placeholder="Email" value="<?php
if(isset($_SESSION['reg_email'])) {
echo $_SESSION['reg_email'];
}
?>" required>
<br>
<input type="email" name="reg_email2" placeholder="Confirm Email" value="<?php
if(isset($_SESSION['reg_email2'])) {
echo $_SESSION['reg_email2'];
}
?>" required>
<br>
<?php if(in_array("Email already in use<br>", $error_array)) echo "Email already in use<br>";
else if(in_array("Invalid email format<br>", $error_array)) echo "Invalid email format<br>";
else if(in_array("Emails don't match<br>", $error_array)) echo "Emails don't match<br>"; ?>
<input type="password" name="reg_password" placeholder="Password" required>
<br>
<input type="password" name="reg_password2" placeholder="Confirm Password" required>
<br>
<?php if(in_array("Your passwords do not match<br>", $error_array)) echo "Your passwords do not match<br>";
else if(in_array("Your password can only contain english characters or numbers<br>", $error_array)) echo "Your password can only contain english characters or numbers<br>";
else if(in_array("Your password must be betwen 5 and 30 characters<br>", $error_array)) echo "Your password must be betwen 5 and 30 characters<br>"; ?>
<input type="submit" name="register_button" value="Register">
<br>
<?php if(in_array("<span style='color: #14C800;'>You're all set! Go ahead and login!</span><br>", $error_array)) echo "<span style='color: #14C800;'>You're all set! Go ahead and login!</span><br>"; ?>
<a href="#" id="signin" class="signin">Already have an account? Sign in here!</a>
</form>
</div>
</div>
</div>
</body>
</html>

register_handler.phpに追加したコード
<?php
//Declaring variables to prevent errors
$fname = ""; //First name
$lname = ""; //Last name
$em = ""; //email
$em2 = ""; //email 2
$password = ""; //password
$password2 = ""; //password 2
$date = ""; //Sign up date
$error_array = array(); //Holds error messages
if(isset($_POST['register_button'])){
//Registration form values
//First name
$fname = strip_tags($_POST['reg_fname']); //Remove html tags
$fname = str_replace(' ', '', $fname); //remove spaces
$fname = ucfirst(strtolower($fname)); //Uppercase first letter
$_SESSION['reg_fname'] = $fname; //Stores first name into session variable
//Last name
$lname = strip_tags($_POST['reg_lname']); //Remove html tags
$lname = str_replace(' ', '', $lname); //remove spaces
$lname = ucfirst(strtolower($lname)); //Uppercase first letter
$_SESSION['reg_lname'] = $lname; //Stores last name into session variable
//email
$em = strip_tags($_POST['reg_email']); //Remove html tags
$em = str_replace(' ', '', $em); //remove spaces
$em = ucfirst(strtolower($em)); //Uppercase first letter
$_SESSION['reg_email'] = $em; //Stores email into session variable
//email 2
$em2 = strip_tags($_POST['reg_email2']); //Remove html tags
$em2 = str_replace(' ', '', $em2); //remove spaces
$em2 = ucfirst(strtolower($em2)); //Uppercase first letter
$_SESSION['reg_email2'] = $em2; //Stores email2 into session variable
//Password
$password = strip_tags($_POST['reg_password']); //Remove html tags
$password2 = strip_tags($_POST['reg_password2']); //Remove html tags
$date = date("Y-m-d"); //Current date
if(isset($_POST['formCountry']))
{
$varCountry = $_POST['formCountry'];
$errorMessage = "";
if(empty($varCountry))
{
$errorMessage = "<li>You forgot to select a country!</li>";
}
if($errorMessage != "")
{
echo("<p>There was an error with your form:</p>\n");
echo("<ul>" . $errorMessage . "</ul>\n");
}
else
{
$redir = "us.php";
switch($varCountry)
{
case "US": $redir = "us.php"; break;
case "UK": $redir = "uk.php"; break;
case "France": $redir = "france.php"; break;
case "Mexico": $redir = "mexico.php"; break;
case "Russia": $redir = "russia.php"; break;
case "Japan": $redir = "japan.php"; break;
default: echo("Error!"); exit(); break;
}
echo "<script>location.href='$redir'</script>";
exit();
}
}
if($em == $em2) {
//Check if email is in valid format
if(filter_var($em, FILTER_VALIDATE_EMAIL)) {
$em = filter_var($em, FILTER_VALIDATE_EMAIL);
//Check if email already exists
$e_check = mysqli_query($con, "SELECT email FROM Users WHERE email='$em'");
//Count the number of rows returned
$num_rows = mysqli_num_rows($e_check);
if($num_rows > 0) {
array_push($error_array, "Email already in use<br>");
}
}
else {
array_push($error_array, "Invalid email format<br>");
}
}
else {
array_push($error_array, "Emails don't match<br>");
}
if(strlen($fname) > 25 || strlen($fname) < 2) {
array_push($error_array, "Your first name must be between 2 and 25 characters<br>");
}
if(strlen($lname) > 25 || strlen($lname) < 2) {
array_push($error_array, "Your last name must be between 2 and 25 characters<br>");
}
if($password != $password2) {
array_push($error_array, "Your passwords do not match<br>");
}
else {
if(preg_match('/[^A-Za-z0-9]/', $password)) {
array_push($error_array, "Your password can only contain english characters or numbers<br>");
}
}
if(strlen($password > 30 || strlen($password) < 5)) {
array_push($error_array, "Your password must be betwen 5 and 30 characters<br>");
}
if(empty($error_array)) {
$password = md5($password); //Encrypt password before sending to database
//Generate username by concatenating first name and last name
$username = strtolower($fname . "_" . $lname);
$check_username_query = mysqli_query($con, "SELECT username FROM Users WHERE username='$username'");
$i = 0;
//if username exists add number to username
while(mysqli_num_rows($check_username_query) != 0) {
$i++; //Add 1 to i
$username = $username . "_" . $i;
$check_username_query = mysqli_query($con, "SELECT username FROM Users WHERE username='$username'");
}
//Profile picture assignment
$rand = rand(1, 2); //Random number between 1 and 2
if($rand == 1)
$profile_pic = "assets/images/profile_pics/defaults/head_deep_blue.png";
else if($rand == 2)
$profile_pic = "assets/images/profile_pics/defaults/head_emerald.png";
$query = mysqli_query($con, "INSERT INTO Users VALUES ('', '', '$fname', '$lname', '$username', '$em', '$password', '$date', '$profile_pic', '0', '0', 'no', ',')");
array_push($error_array, "<span style='color: #14C800;'>You're all set! Go ahead and login!</span><br>");
//Clear session variables
$_SESSION['reg_fname'] = "";
$_SESSION['reg_lname'] = "";
$_SESSION['reg_email'] = "";
$_SESSION['reg_email2'] = "";
}
}
?>
あなたに<select>
register.php内のタグあなたは「formCountry」に等しい属性名を追加する必要があります。
<select name="formCountry">
<!-- Options -->
</select>
これは、サーバーで「formCountry」($_POST['formCountry']
)という名前のデータを探しているためです。このデータの名前をHTML(クライアント)でも定義する必要があります。そうしないと、そのフィールドが渡されないためです。名前がないため、サーバー。
名前属性の詳細については、https://www.w3schools.com/tags/att_select_name.aspをご覧ください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加