решено:
Существует конфликт с моим объявлением переменных.Оказывается, я объявляю $ пароль в моей базе данных connect_database, но также и в моем скрипте учетной записи, что означает, что $ пароль всегда установлен и, следовательно, всегда пропускает па в конце, если ... в процессе работы, это тот же самый простой паролькак мой логин ...
ОРИГИНАЛ:
У меня проблема с запросами внутри операторов if в PHP.Я делаю сценарий обновления учетной записи.
Мне требуется соединение с базой данных сверху, а затем, в зависимости от результата POST, я делаю разные запросы в некоторых операторах if.
Если он запускает все операторы IF, он выполняет запрос в конце.
Если он перехватывается любым из операторов if, выполняется запрос, и я хочу, чтобы скрипт перенаправлял с кодом сообщения и завершал код с помощьювыход.
Проблема в том, что скрипт не завершится после выполнения.Он выполняет запрос, но работает до конца - без перенаправления и выхода ...
Я нашел обходной путь, который требует, чтобы база данных была обязательной внутри операторов if, а затем снова внизу вместотолько сверху, но моя первоначальная идея заключалась в том, чтобы просто включить его сверху и использовать соединение в операторе if, а затем снова внизу.
Может кто-нибудь объяснить, почему один работает, а другой нет?Это не имеет большого значения.Я просто не понимаю, почему ...
Большое спасибо
Это не работает ( Требуется база данных вне оператора IF ):
<?php
session_start();
if(!isset($_SESSION["user"])) {
header("location: ../../../login/login_form.php");
exit;
}
$user = mysql_real_escape_string($_POST['user']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$id = $_SESSION['user_id'];
//Display if user and email is blank - try again---------------
if($user==NULL || $email==NULL){
header('location: ../../../index.php?show=account&message=1');
exit;
}
require_once('../../connect_database.php');
//Check if password is blank - meaning only updating user and email -----
if ($password==NULL){
$query = "UPDATE user SET user='$user', email='$email' WHERE id=".$id;
mysql_query($query) or die(mysql_error());
header('location: ../../../index.php?show=account&message=0');
mysql_close();
exit;
}
//Display if password less than 8 characers----------------
if(strlen($password)<8 && $password!=NULL){
header('location: ../../../index.php?show=account&message=2');
mysql_close();
exit;
}
//Run this if everything is to be changed incl. password-------
$query = "UPDATE user SET user='$user', password=md5('$password'), email='$email' WHERE id=".$id;
mysql_query($query) or die(mysql_error());
mysql_close();
header('location: ../../../index.php?show=account&message=0');
?>
Это работает ( Требуется база данных внутри оператора IF, а затем снова внизу ):
<?php
session_start();
if(!isset($_SESSION["user"])) {
header("location: ../../../login/login_form.php");
exit;
}
$user = mysql_real_escape_string($_POST['user']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$id = $_SESSION['user_id'];
//Display if user and email is blank - try again---------
if($user==NULL || $email==NULL){
header('location: ../../../index.php?show=account&message=1');
exit;
}
//Check if password is blank - meaning only updating user and email ----
if ($password==NULL){
require_once('../../connect_database.php');
$query = "UPDATE user SET user='$user', email='$email' WHERE id=".$id;
mysql_query($query) or die(mysql_error());
header('location: ../../../index.php?show=account&message=0');
mysql_close();
exit;
}
//Display if password less than 8 characers------------------
if(strlen($password)<8 && $password!=NULL){
header('location: ../../../index.php?show=account&message=2');
exit;
}
//Run this if everything is to be changed incl. password----------
require_once('../../connect_database.php');
$query = "UPDATE user SET user='$user', password=md5('$password'), email='$email' WHERE id=".$id;
mysql_query($query) or die(mysql_error());
mysql_close();
header('location: ../../../index.php?show=account&message=0');
?>