Я пытаюсь создать registration.php
форма.
Страница регистрации проверяет наличие «registrationError» и распечатывает его, иначе она печатает регистрационную форму.
Регистрационная форма принимает first name
а также last name
поля.
onClick="registrationValidator();"
Вот форма в registration.php страница
<?php session_start(); require_once 'inc/functions.php';
if(sessionCheck('registrationError')) { //If session variable is set and not null
foreach ($_Session['registrationError'] as $assoc) {
echo $assoc;
}
} else { ?>
<form class="registrationBox" method="post">
<div id="profileInfo">
<label class="label">First Name </label><br />
<input type="text" name="memberFirstName"><br />
<label class="label">Last Name </label><br />
<input type="text" name="memberLastName"><br />
<input type="submit" name="submit" value="submit" onClick="registrationValidator();">
</div>
</form>
<?php } ?>
registrationValidator()
который в functions.php
проверяет, является ли submit
кнопка установлена, если нет, она устанавливает $_Session['registrationError']
, но если задано submit, проверяется, first name
а также last name
установлены, если там также установлено, что делает «некоторый» запрос, ELSE $_Session['registrationError']
установлено. Вот функция registrationValidator()
на странице functions.php.
/********** Registration Validator **********/
function registrationValidator() {
// Escape form fields from SLQ injections.
$mFirstName = escape($_POST['memberFirstName']);
$mLastName = escape($_POST['memberLastName']);
$submit = escape($_POST['submit']);
if(isset($submit)) {
if(isset($mFirstName)) {
doSLQ();
} else {
$_Session['registrationError'] = 'Name field not set';
} if(isset($password)) {
doSLQ();
} else {
$_Session['registrationError'] = 'Password field is not set';
}
} else {
$_Session['registrationError'] = 'Did not submit';
}
}
Дополнительно, вот sessionCheck()
функция, которая проверяет, установлен ли сеанс, если он установлен.
/********** Perform Session Check **********/
// takes a string as an argument and checks id a session variable with that string as its name has a value assigned to it
function sessionCheck($sessionVariable) {
// checks if there is a session variable with the same name as the argument string
if(isset($_SESSION[$sessionVariable])) {
// if there is a session variable with the same name as the argument string, return true as the output of this function
return true;
} else {
// if there is not a session variable with the same name as the argument string, return false as the output of this function
return false;
}
}
Я знаю что $_Session['registrationError']
не устанавливается по какой-то причине, потому что, когда я НЕ ввожу имя и / или фамилию, ошибка не выводится поверх registration.php
стр. Я не понимаю почему? Есть идеи?
Я думаю, что вы немного запутались, когда пользователь нажал кнопку отправки, событие события onclick сработает и попытается вызвать JavaScript registrationValidator (), этот метод не существует в JavaScript.
Когда пользователь нажимает кнопку отправки, он выполняет поиск JavaScript registrationValidator () и не вызывает метод registrationValidator () сервера (PHP).
Метод registrationValidator () никогда не будет вызываться, поэтому сессия пуста и не устанавливается ни разу.
Других решений пока нет …