Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Проблема с глобальным массивом


Рекомендуемые сообщения

Итак был код, который добавлял сообщение в файл, вот такой:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><?php if(isset($_POST['submit'])) {	  $name = $_POST['nick_name'];	  $email = $_POST['e_mail'];	  $text = $_POST['text'];	  $status = false;	  if(preg_match('/\S/', $name) == false || (strlen($name)) > 20) {			   		   $status = true;		   $text_er[] = 'Неверно поле Nick';	  }	  if(preg_match('/\w{2,}@\w{2,}\.\w{2,}/', $email) == false || (strlen($email)) > 30) {		   $status = true;		   $text_er[] = 'Неверно поле e-mail';	  }	  if(preg_match('/\S/', $text) == false || (strlen($text)) > 500) {		   $status = true;		   $text_er[] = 'Неверно введен текст сообщения';	  }	  if(!$status) {		   $name = htmlspecialchars(stripslashes($name));		   $email = htmlspecialchars(stripslashes($email));		   $text = htmlspecialchars(stripslashes($text));		   $result_text = bb_code($text);		   $fr = fopen($file,'a');		   if(fputs($fr, $name."<|>".$email."<|>".trim($result_text)."<|>".date("d.m.Y, H:i")."\r\n") != false) {				echo "<meta http-equiv='Refresh' content='3; url=index.php'>";				$text_show = "Ваше сообщение успешно добавлено. <br> Если ваш браузер не поддерживает автоматическую переадресацию то перейдите по ссылке. <a href=\"index.php\">index.php</a>";				$title = 'Сообщение успешно добавленно';				fclose($fr);		   } else {				$text_show = "Произошла ошибка при добовления сообщения. Поробуйте позже. <br> <a href=\"java script:window.history.back();\">Назад</a>";				$title = 'Произошла ошибка при добовление сообщения';				fclose($fr);		   }	  } } else {	  $text_show = "Вы не заполнили поля"; }?><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title><?=$title;?></title><link rel="stylesheet" type="text/css" href="styles/style.css"></head><body><div id="all" style="vertical-align:middle;"><div id="main"><?=$text_show;?><p><ul><?php if($status) {	  foreach($text_er as $val) {?>	  <li><?=$val;?></li><?php	  }	  echo "<a href=\"java script:window.history.back();\">Назад</a>";	  unset($text_er); }?></ul></div></div></body></html>

Но приспичило PHP - код отвечающий за обработку корректности данных в форме засунуть в отдельный файл и соответсвенно в функцию, вот что получилось, главный файл add_message.php:

<?phprequire_once 'functions.php';?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><?phpif(isset($_POST['submit'])) {	$name = $_POST['nick_name'];	$email = $_POST['e_mail'];	$text = $_POST['text'];	$status = check_form();	if(!$status) {		$name = htmlspecialchars(stripslashes($name));		$email = htmlspecialchars(stripslashes($email));		$text = htmlspecialchars(stripslashes($text));		$result_text = bb_code($text);		$fr = fopen($file,'a');		if(fputs($fr, $name."<|>".$email."<|>".trim($result_text)."<|>".date("d.m.Y, H:i")."\r\n") != false) {			echo "<meta http-equiv='Refresh' content='3; url=index.php'>";			$text_show = "Ваше сообщение успешно добавлено. <br> Если ваш браузер не поддерживает автоматическую переадресацию то перейдите по ссылке. <a href=\"index.php\">index.php</a>";			$title = 'Сообщение успешно добавленно';			fclose($fr);		} else {			$text_show = "Произошла ошибка при добовления сообщения. Поробуйте позже. <br> <a href=\"java script:window.history.back();\">Назад</a>";			$title = 'Произошла ошибка при добовление сообщения';			fclose($fr);		}	}} else {	$text_show = "Вы не заполнили поля";}?><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title><?=$title;?></title><link rel="stylesheet" type="text/css" href="styles/style.css"></head><body><div id="all" style="vertical-align:middle;"><div id="main"><?=$text_show;?><p><ul><?phpif($status) {	foreach($text_er as $val) {?>	<li><?=$val;?></li><?php	}	echo "<a href=\"java script:window.history.back();\">Назад</a>";}?></ul></div></div></body></html>

И вспомогательный, functions.php:

<?php// Файлу с сообщениями$file = 'message/messages.txt';// Временный файл с сообщениями$file_tmp = 'message/message_tmp.txt';//Сообщений на странице.$posts = 5;// Проверка полей формfunction check_form() {	$status = false;	$text_er = array();	global $text_er;	if(preg_match('/\S/', $name) == false || (strlen($name)) > 20) {		$status = true;		$text_er[] = 'Неверно поле Nick';	}	if(preg_match('/\w{2,}@\w{2,}\.\w{2,}/', $email) == false || (strlen($email)) > 30) {		$status = true;		$text_er[] = 'Неверно поле e-mail';	}	if(preg_match('/\S/', $text) == false || (strlen($text)) > 500) {		$status = true;		$text_er[] = 'Неверно введен текст сообщения';	}	return $status;}?>

Так вот, после этих преобразований проблема заключается в том, что: что бы ты ни ввёл в форму, он выдаёт все три сообщения об ошибке: "Неверно поле Nick", "Неверно поле e-mail", "Неверно введен текст сообщения".

Помогите пожалуйста решить проблему, всем заранее спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Очевидно, что если что-то ВСЕГДА пишет, то просто в этой проверке это всегда выполняется.

На всякий случай можно взять в скобки проверку strlen <> 20

Изменено пользователем motorway
Ссылка на комментарий
Поделиться на другие сайты

я же говорил, дело в проверке :bye1: нигде в другом месте не могло быть, значит, надо было проверить значения переменных

Ссылка на комментарий
Поделиться на другие сайты

Все я решил проблему. Надо было объявить переменные $name, $email, $text, тоже глобальными.

Я же тебе это уже говорил! Ты сказал, что не помогло. 0_о

Ссылка на комментарий
Поделиться на другие сайты

Я нетуда прописал. Надо было в функцию, которая отвечет за провреку полей форм. Я вот так и неврубился почему именно в ней работает, а если в другой части кода объявишь глобальными, то неработает.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...