Jump to content
  • 0

По разному работает скрипт на localhost и хостинге


Vlad02
 Share

Question

Есть скрипт

<?php	require 'class.phpmailer.php';	$mail=new PHPMailer;	$title='http://myhost.com';	$mail->FromName=test_input($_POST['name']);	$mail->From=test_input($_POST['mail']);	$mail->AddAddress('XXXXX@XXXXX.XXX');	$mail->Subject=test_input($_POST['name']);	$mail->Body='Письмо с сайта '.$title.'<br>'.'Отправлено из формы:'.test_input($_POST['form_name']).'<br>'.test_input($_POST['text']);	$mail->IsHTML(true);	function test_input($data){		$data=trim($data);		$data=stripslashes($data);		$data=htmlspecialchars($data);		return $data;	}?>

так вот, function test_input на localhost работает,  а на хосте нет, в чем может быть проблема?

Письмо приходит и там и там.

З.Ы. В PHP полный нуб, буду благодарен за помощь.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Ошибки никакой нет? display_errors можно включить и посмотреть, что скажет.

На локалхосте винда? Может быть проблема в этом. Например, на винде 'class.phpmailer.php' 'Сlass.phpmailer.php' один и тот же файл, на линуксе — разные, вот и может случиться, что не находит нужный файл.

Link to comment
Share on other sites

  • 0

Безотносительно к проблемам хостинга, функция очень, мягко говоря, странная, и сама по себе никак не помогает защитить форму от рассылки спама через нее (одна надежда, что это реализовано в классе). Мануал говорит (http://pk1.php.net/stripslashes), что работа stripslashes может зависеть от настроек. Но зачем она тут вообще?

Link to comment
Share on other sites

  • 0

Ошибки никакой нет? display_errors можно включить и посмотреть, что скажет.

На локалхосте винда? Может быть проблема в этом. Например, на винде 'class.phpmailer.php' 'Сlass.phpmailer.php' один и тот же файл, на линуксе — разные, вот и может случиться, что не находит нужный файл.

Ошибок нет, форма отправляется (как на localhost так и на хостинге) не работает именно test_input, т.е то, что должен резать и переводить в html сущности пропускает без обработки.

Безотносительно к проблемам хостинга, функция очень, мягко говоря, странная, и сама по себе никак не помогает защитить форму от рассылки спама через нее (одна надежда, что это реализовано в классе). Мануал говорит (http://pk1.php.net/stripslashes), что работа stripslashes может зависеть от настроек. Но зачем она тут вообще?

Этот кусок я взял здесь http://www.w3schools.com/php/php_form_validation.asp, думал там серьезные люди пишут, а получается, что когда полазил по инету, то это не так.(

У меня складывается впечатление, что я очередной велосипед изобретаю.

Я так понял, что phpmailer не занимается валидацией данных на стороне сервера -верно?

Если верно, есть ли готовые решения для этого дела?

Link to comment
Share on other sites

  • 0

В любой «валидации» и «санитизации» нужно прежде всего четко представлять, валидность для чего требуется и что от чего защищается. Хорошая обзорная статья про основные виды уязвимостей в вебе и защит от них — http://www.captcha.ru/articles/antihack/. Конкретно про защиту почтовых форм — http://phpfaq.ru/mail (тот сайт вообще советую изучить целиком). Htmlspecialchars к ней отношения не имеет, но принимать от пользователя html-разметку — вообще неудачная идея (неудобно для большинства и небезопасно). Лучше принимать простой текст и подставлять в надежный html-шаблон.

  • Like 1
Link to comment
Share on other sites

  • 0

В любой «валидации» и «санитизации» нужно прежде всего четко представлять, валидность для чего требуется и что от чего защищается. Хорошая обзорная статья про основные виды уязвимостей в вебе и защит от них — http://www.captcha.ru/articles/antihack/. Конкретно про защиту почтовых форм — http://phpfaq.ru/mail (тот сайт вообще советую изучить целиком). Htmlspecialchars к ней отношения не имеет, но принимать от пользователя html-разметку — вообще неудачная идея (неудобно для большинства и небезопасно). Лучше принимать простой текст и подставлять в надежный html-шаблон.

Спасибо за ссылки, прочитал, но остался вопрос, если я из формы отправляю письмо (стандартная форма для лендинга (поля: имя, телефон, e-mail, какой-то текст)), то на стороне сервера надо решать проблему XSS атак и бороться с "\r" и "\n" или все это не нужно, а проверять только e-mail на соответствие стандартам?

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.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   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

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy