По какой-то неизвестной мне причине моя функция заголовка php не перенаправит мой скрипт на новую страницу. Я знаю, что вывод на экран не может быть отправлен до вызова функции, но мой скрипт все еще не работает, несмотря на то, что я не вижу вывода на экран. Мой код ниже. Этот код выполняет несколько блоков if, после чего перенаправляет пользователя на соответствующую страницу.
вот код:
session_start();
require_once('Test_Input.php');
if(!isset($_SESSION['Form_First_Name']) || !isset($_SESSION['Form_Last_Name']) || !isset($_SESSION['Form_Email']) || !isset($_SESSION['Form_Message']))
{
$_SESSION['Form_First_Name'] = '';
$_SESSION['Form_Last_Nameorm'] = '';
$_SESSION['Form_Email'] = '';
$_SESSION['Form_Message'] = '';
}
if(isset($_POST['Clear']) && $_POST['Clear'] == 'clear')
{
$_SESSION['Form_First_Name'] = '';
$_SESSION['Form_Last_Nameorm'] = '';
$_SESSION['Form_Email'] = '';
$_SESSION['Form_Message'] = '';
unset($_SESSION['name_Switch']);
unset($_SESSION['Form_Email_Switch']);
//header('location:Contact_Form.php');
}
$response = $_POST['Response'];
$image_request = $_POST['DB_Response'];
$first_name = $_SESSION['Form_First_Name'] = $_POST['First_Name'];
$last_name = $_SESSION['Form_Last_Name'] = $_POST['Last_Name'];
$email = $_SESSION['Form_Email'] = $_POST['Email'];
$_SESSION['Form_Message'] = $_POST['Message'];
$first_name_result = Test_Input::name_validation($first_name);
var_dump($first_name_result);
$last_name_result = Test_Input::name_validation($last_name);
$email_result = Test_Input::email_validation($email);
if(!$first_name_result || !$last_name_result )
{
$_SESSION['Name_Switch'] = false;
header('location:Contact_Form.php');
exit();
}
if (!$email_result)
{
$_SESSION['Form_Email_Switch'] = false;
header('location:Contact_Form.php');
exit();
}
if($response != $image_request)
{
unset($_SESSION['Email_Switch']);
header('location:Contact_Form.php');
exit();
}
else
{
global $first_name;
global $last_name;
global $email;
$message = 'FROM: '.$first_name.' '.$last_name.' \n\n'. $_POST['Message'];
$to = '[email protected]';
$subject = 'Show Love Production Contact Form';
$headers = $email;
mail($to, $subject, $message, $headers);
$_SESSION['Email_Switch'] = true;
unset($_SESSION['Form_First_Name']);
unset($_SESSION['Form_Last_Name']);
unset($_SESSION['Form_Email']);
unset($_SESSION['Form_Message']);
header('location:Contact_Form.php');
exit();
}
Вот тестовый скрипт «Test_Input.php», который вызывается вышеуказанным кодом.
require_once('Check_Password.php');
class Test_Input extends Check_Password
{
public static function test_input_info($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
public static function name_validation($data)
{
if (!preg_match("/^[a-zA-Z]*$/",$data) || empty($data))
{
return false;
}
else
{
return true;
}
}
public static function user_name_validation($data)
{
if (!preg_match("/^[a-zA-Z0-9\_\-]*$/",$data))
{
return false;
}
else
{
return true;
}
}
public static function email_validation($data)
{
if (!filter_var($data, FILTER_VALIDATE_EMAIL))
{
return false;
}
else
{
return true;
}
}
public static function password_validation($password, $conf_password)
{
if($password == $conf_password)
{
return 0;
}
else if (empty($password) || empty($conf_password))
{
return 1;
}
else
{
return -1;
}
}
public static function music_prod_validation($data)
{
if (!preg_match("/^[a-zA-Z0-9]+[a-zA-Z0-9_\_\- ]*$/",$data))
{
return false;
}
else
{
return true;
}
}
}
Вот скрипт «Check_Password.php», вызываемый приведенным выше кодом:
class Check_Password
{
public function check_pass($password, $conf_password)
{
if($password == $conf_password)
{
return 0;
}
else if (empty($password) || empty($conf_password))
{
return 1;
}
else
{
return -1;
}
}
}
Вы всегда можете использовать перенаправление заголовка html — это то, что я использую, когда местоположение заголовка PHP не отвечает из-за какой-то трудной для поиска ошибки.
http://example.com/ «/>
Вы должны отобразить его, повторить метатег html так же, как вы бы обычно выводили теги html, или вы можете аккуратно поместить его вне разделителей
Других решений пока нет …