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

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


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

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

<!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_о

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

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

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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