@TommyAngel

Не отрабатывает php при jquery?

есть html:

<div class="modalDialog" id="reg">
  <div>
  	<a href="#close" title="Закрыть" class="close">x</a>
	<h2>Регистрация</h2>
    <form action="/php/verification.php" method="POST">
    <p>Логин:</p>
    <input type="text" name="login" >
	<p>Пароль:</p>
    <input type="password" name="password" >
	<p>Подтверждение:</p>
    <input type="password" name="password2" >
	<p>E-Mail:</p>
	<input type="text" size="20" name="email">
    <button type="submit" name="submit" >Готово</button>
    </form>
  </div>
</div>


При этом скрипт js обработчик форм:

function submitForm(e){
  e.preventDefault();
  let $form = $(this);
  let url = $form.attr('action');
  let formData=$form.serialize();

  function success(data){
    $form.html(data); 
  }
  function error(jqXHR, text, error){
    $form.html(error); 
  }
  $.ajax({
    type: "POST",
     url: url,
    data:formData,
    success:success,
    error:error
  })
}
$(document).ready(function () {
    $("form").submit(submitForm);	
});


php который обрабатывает регистрацию:

<?php
include("../php/bd.php");
	
    if (isset($_POST['submit'])){
		if(empty($_POST['login']))  {
			echo '<br><font color="red"><img border="0" src="error.gif" align="middle" alt="Введите логин!"> Введите логин! </font>';
		} 
		elseif (!preg_match("/^\w{3,}$/", $_POST['login'])) {
			echo '<br><font color="red"><img border="0" src="error.gif" align="middle" alt="В поле "Логин" введены недопустимые символы!"> В поле "Логин" введены недопустимые символы! Только буквы, цифры и подчеркивание!</font>';
		}
		elseif(empty($_POST['password'])) {
			echo '<br><font color="red"><img border="0" src="error.gif" align="middle" alt="Введите пароль !"> Введите пароль!</font>';
		}
		elseif (!preg_match("/\A(\w){6,20}\Z/", $_POST['password'])) {
			echo '<br><font color="red"><img border="0" src="error.gif" align="middle" alt="Пароль слишком короткий!"> Пароль слишком короткий! Пароль должен быть не менее 6 символов! </font>';
		}
		elseif(empty($_POST['password2'])) {
			echo '<br><font color="red"><img border="0" src="error.gif" align="middle" alt="Введите подтверждение пароля!"> Введите подтверждение пароля!</font>';
		}
		elseif($_POST['password'] != $_POST['password2']) {
			echo '<br><font color="red"><img border="0" src="error.gif" align="middle" alt="Введенные пароли не совпадают!"> Введенные пароли не совпадают!</font>';
		}
		elseif(empty($_POST['email'])) {
			echo '<br><font color="red"><img border="0" src="error.gif" align="middle" alt="Введите E-mail!">Введите E-mail! </font>';
		}
		elseif (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $_POST['email'])) {
			echo '<br><font color="red"><img border="0" src="error.gif" align="middle" alt="E-mail имеет недопустимий формат!"> E-mail имеет недопустимий формат! Например, name@gmail.com! </font>';
		}
		 
		else{
			$login = $_POST['login'];
			$password = $_POST['password'];
			$mdPassword = md5($password);
			$password2 = $_POST['password2'];
			$email = $_POST['email'];
			$rdate = date("d-m-Y в H:i");
			$name = $_POST['name'];
			$lastname = $_POST['lastname'];  
			$query = ("SELECT id FROM users WHERE login='$login'");
			$cash = $_POST['cash'];
			$sql = mysql_query($query) or die(mysql_error());
			
			if (mysql_num_rows($sql) > 0) {
				echo '<font color="red"><img border="0" src="error.gif" align="middle" alt="Пользователь с таким логином зарегистрированый!"> Пользователь с таким логином зарегистрирован!</font>';
			}
			else {
				$query2 = ("SELECT id FROM users WHERE email='$email'");
				$sql = mysql_query($query2) or die(mysql_error());
				if (mysql_num_rows($sql) > 0){
					echo '<font color="red"><img border="0" src="error.gif"  alt="Пользователь с таким e-mail зарегистрированый!"> Пользователь с таким e-mail уже зарегистрирован!</font>';
				}
				else{
					$query = "INSERT INTO users (login, password, email, reg_date, name_user, lastname, cash )
							  VALUES ('$login', '$mdPassword', '$email', '$rdate', '$name', '$lastname', '$cash')";
					$result = mysql_query($query) or die(mysql_error());;
					echo "<p class='tete'>Вы успешно зарегистрировались!</p>";
					
								
				}
			}
		}
    }
?>


При этом всем работает php на вход, который все таки берет инфу из мускула...
HTML
<div class="modalDialog" id="login">
  <div>
	<a href="#close" title="Закрыть" class="close">x</a>
	<h2>Войти на сайт</h2>
    <form action="/php/login.php" method="POST">
    <p>Логин:</p>
    <input type="text" name="login" >
	<p>Пароль:</p>
    <input type="password" name="password" >
    <button type="submit" name="submit" >Войти</button>
    </form>
    <a class="but2" href="#reg">Регистрация</a>
  </div>
</div>


PHP
<?php
include("../php/bd.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Web Mining</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<?php
if (isset($_POST['login'])) {
	$login = $_POST['login']; 
	if ($login == '') {
		unset($login);
		exit ("Введите пожалуйста логин!");
	} 
}
if (isset($_POST['password'])) {
	$password=$_POST['password']; 
	if ($password =='') {
		unset($password);
		exit ("Введите пароль");
	}
}

$login = stripslashes($login);
$login = htmlspecialchars($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);


$login = trim($login);
$password = trim($password);

$password = md5($password);

$user = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'");
$id_user = mysql_fetch_array($user);
if (empty($id_user['id'])){
	exit ("Извините, введённый вами логин или пароль неверный.");
}
else {   
    $_SESSION['password']=$password; 
	$_SESSION['login']=$login; 
    $_SESSION['id']=$id_user['id'];	
    $_SESSION['cash']=$id_user['cash'];	
}
echo "<meta http-equiv='Refresh' content='0; URL=/index.html'>";
?>
</body>
</html>


вход скрипт обрабатывается, но логин нет.. ГУРУ помогите... всю голову сломал... куда копать?
При отключении jquery рега работает, но надписи в отдельной вкладке...
При включении работает только вход, рега нет....
Скажите где что не так???
'$name', '$lastname', '$cash')";
удалил уже....
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 2
Настройте xdebug. Поставьте точку останова в начале php и пройдитесь по шагам
Ответ написан
Комментировать
@MrTimon
Судя по html выходит что $name, $lastname, и $cash у вас равны null. Может проблема в этом? неуверен переводится ли null в string, скорее всего там ошибка. Попробуйте их брать не с $__POST масива, а просто присвойте им некие значения для быстрой проверки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы