Переменные, не проходящие между операторами IF Переполнение стека

Итак, я пишу фрагмент кода, который проверяет ряд условий, заданных в инструкциях IF, чтобы отобразить кнопку для регистрации на веб-сайте. Однако переменные, которые я объявляю как истинные / ложные в моих операторах IF, похоже, не переносятся в оператор, где он определяет, все ли они истинны. Я посмотрел онлайн и, похоже, нигде не могу найти никакой проблемы, подобной этой, так что я не знаю, глуп ли я или есть настоящая проблема. Вот мой код:

<?php

include_once('db_conx.php');

//CHECKING USERNAME IS NOT TAKEN

if(!empty($_POST["username"])) {

$usernameAuth = false;
$username = $_POST['username'];

$sql = "SELECT * FROM users WHERE username='$username'";
$queryUname = mysqli_query($conn, $sql);
$username_check = mysqli_num_rows($queryUname);

if($username_check>0){
echo "Username Not Available.";
} else {
echo "Username Available.";
$usernameAuth = true;
}
}

//CHECKING EMAIL HAS NOT BEEN USED BEFORE

if(!empty($_POST["email"])) {

$emailAuth = false;
$email = $_POST['email'];

$sql = "SELECT * FROM users WHERE email='$email'";
$queryEmail = mysqli_query($conn, $sql);
$email_check = mysqli_num_rows($queryEmail);

if($email_check>0){
echo "Email already registered.";
} else {
$emailAuth = true;
}
}

//CHECKING THAT THE PASSWORDS MATCH AND ARE VALID

if(!empty($_POST["password1"]) && !empty($_POST["password2"])) {

$passAuth = false;
$password1 = $_POST['password1'];
$password2 = $_POST['password2'];

if($password1 != $password2) {
echo "Your passwords do not match.";
} elseif(!preg_match("#[0-9]+#",$password1)) {
echo "Your Password Must Contain At Least 1 Number!";
} elseif(!preg_match("#[A-Z]+#",$password1)) {
echo "Your Password Must Contain At Least 1 Capital Letter!";
} elseif(!preg_match("#[a-z]+#",$password1)) {
echo "Your Password Must Contain At Least 1 Lowercase Letter!";
} else {
$passAuth = true;
}
}

//CHECKING TO SEE IF ALL THE VALIDATION CONDITIONS ARE MET

if(!empty($_POST["checkinput"])){

if(($usernameAuth) && ($emailAuth) && ($passAuth)){
echo '<button id="button" class="btn waves-effect waves-light" type="submit" onclick="signup()" name="action">Register<i class="material-icons right">send</i></button>';
} else {
echo 'shite';
}
}
?>

Если вам нужно узнать больше или вы хотите узнать больше о проекте, просто скажите, и я с удовольствием предоставлю их.

ОБНОВИТЬ

Добавлены AJAX JQUERY и код index.php:

<!DOCTYPE html>

  <!--stylesheet -->
<link rel="stylesheet" type="text/css" href="stylesheet.css">

<!-- MaterializeCSS -->
<link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link type="text/css" rel="stylesheet" href="css/materialize.min.css"  media="screen,projection"/>

<!-- fullPage.js -->
<link rel="stylesheet" type="text/css" href="fullPage.js-master/jquery.fullPage.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="vendors/jquery.easings.min.js"></script>
<script type="text/javascript" src="fullPage.js-master/vendors/jquery.slimscroll.min.js"></script>
<script type="text/javascript" src="fullPage.js-master/jquery.fullPage.js"></script>

<!--TILE SCROLLING-->
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$('#fullpage').fullpage({
verticalCentered: true,
sectionsColor: ['#1bbc9b', '#2c3e50', '#34495e'],
anchors: ['homepage', 'Login', 'Register'],
afterRender: function(){
//playing the video
$('video').get(0).play();
}
});
});
</script>
<!-- VALIDATING THE NEEDED FIELDS -->
<script type="text/javascript">
//CHECKING USERNAME

function UserAvailability() {
jQuery.ajax({
url: "scripts/validation.php",
data:'username='+$("#username").val(),
type: "POST",
success:function(data){
$("#user-availability-status").html(data);
},
error:function (){}
});
}

//CHECKING EMAIL

function EmailAvailability() {
jQuery.ajax({
url: "scripts/validation.php",
data:'email='+$("#email").val(),
type: "POST",
success:function(data){
$("#email-availability-status").html(data);
},
});
}

//CHECKING PASSWORDS MATCH

function passwordCheck() {
jQuery.ajax({
url: "scripts/validation.php",
data:'password1='+$("#password1").val()+'&password2='+$("#password2").val(),
type: "POST",
success:function(data){
$("#password-status").html(data);
},
});
}

//SIGNUP

function checkInput() {
jQuery.ajax({
url: "scripts/validation.php",
data:'checkinput=success',
type: "POST",
success:function(data){
$("#register-button").html(data);
},
});
}

//CHECKING LOGIN DATA IS VALID

function register() {
jQuery.ajax({
url: "scripts/validation.php",
data:'forename='+$("#firstName").val()+'&surname='+$("#lastName").val(),
type: "POST",

});
}
</script>
</head>
<body>
<div id="fullpage">
<div class="section " id="section0">
<video autoplay loop muted id="myVideo">
<source src="video/homeVideo.mp4" type="video/mp4">
</video>
<div class="layer">
<ul id="menu">
<li data-menuanchor="Login"><a href="#Login">Login</a></li>
<li data-menuanchor="Register"><a href="#Register">Register</a></li>
</ul>
</div>
<div class="layer">
<h1>Title</h1>
</div>
</div>
<div class="section" id="section1">
<div class="loginCard">
<form action ="scripts/login.php" method="post">
<input type="text" id="usernameLogin" name="username" placeholder="Username">
<input type="password" id="passwordLogin "name="password" placeholder="Password" onblur="loginCheck()">
<span id="login-status"></span>
</form>
</div>
<br>
<div class="registerCard">
<form action="scripts/signup.php" method="post" class="input-field" oninput="checkInput()">
<input type="text" name="firstName" placeholder="First Name" id="first_name" class="validate" >
<input type="text" name="lastName" placeholder="Surname">
<input type="text" nenter code hereame="username" id="username" placeholder="Username" onkeyup="UserAvailability()">
<span id="user-availability-status"></span>
<input type="email" name="email" id="email" placeholder="Email" onkeyup="EmailAvailability()">
<span id="email-availability-status"></span>
<input type="password" name="password" id="password1" placeholder="Password">
<input type="password" name="passwordVerify" id="password2" placeholder="Re-enter Password" onkeyup="passwordCheck()">
<span id="password-status"></span><br>
<span id="register-button"></span>
</div>
</div>
</div>
</body>

0

Решение

То, как вы это делаете, когда эти параметры POST пусты, переменная никогда не инициализировалась.

Переменная, которая будет использоваться далее, а не только внутри этого оператора if, должна иметь начальное значение по умолчанию, инициализированное вне всех операторов if.

+ Изменить

if(!empty($_POST["username"])) {

$usernameAuth = false;

в

$usernameAuth = false;
if(!empty($_POST["username"])) {

А ТАКЖЕ

if(!empty($_POST["email"])) {

$emailAuth = false;

в

$emailAuth = false;
if(!empty($_POST["email"])) {

А ТАКЖЕ

if(!empty($_POST["password1"]) && !empty($_POST["password2"])) {

$passAuth = false;

в

$passAuth = false;
if(!empty($_POST["password1"]) && !empty($_POST["password2"])) {

Или, что еще лучше, инициализируйте начальное значение по умолчанию для всех этих флагов в верхней части файла:

$usernameAuth = false;
$emailAuth = false;
$passAuth = false;
...
if(!empty($_POST["username"])) {
...
if(!empty($_POST["email"])) {
...
if(!empty($_POST["password1"]) && !empty($_POST["password2"])) {

Это сделает логику более понятной и оставит меньше места для ошибки.

А затем проверьте наличие этих упущений.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]