Jump to content
СофтФорум - всё о компьютерах и не только

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


Recommended Posts

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

<!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", "Неверно введен текст сообщения".

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

Link to comment
Share on other sites

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

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

Edited by motorway
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...