PDA

Показать полную графическую версию : Общие вопросы по коду


Страниц : 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18 19 20 21 22

proxy
19-07-2009, 04:01
Использую такой PHP скрипт для отправки почты. »
пример:

<?php
// << - stoned animations online mailform.php - >>
// <<< - Stoned Animations online © 2000 - 2001 - >>>


// All you need to change is the e-mail addy:
$email = 'mashinichenko@rambler.ru';
$subject = 'Message from web site';

//foreach ($HTTP_POST_VARS as $var) {
foreach ($HTTP_POST_VARS as $key => $value) $text .= "$key = $value \n";

$from = $HTTP_POST_VARS['name'].' '.$HTTP_POST_VARS['email'];
$mailResult = mail($email, $subject, $text,"From: $from\nReply-To: $from\n");

if($mailResult) $mailResult = 'Письмо отправлено!';
else $mailResult = 'Ошибка, письмо не отправлено!';

?>


<html>

<head>
<title>Sent!</title>
</head>

<body bgcolor="#ffffff" text="#000000">

<p align="center"><font size="2" face="Arial"><b><? echo $mailResult; ?></b></font>

</body>

</html>

EN130
19-07-2009, 12:03
proxy, Рабоает, но ВСЕ русские буквы в виде кракозябр. Видимо проще будет найти другой скрипт.

Sham
19-07-2009, 15:07
From: $from\nReply-To: $from\n »
кодировки нету, также перенос строки не по стандарту (http://tools.ietf.org/html/rfc822#section-3.2) (дб CRLF - \r\n)
From: $from\r\nReply-To: $from\r\nContent-Type: text/plain; charset=windows-1251
не соблюдена форма "имя" <мыло> в заголовке From

Romanio
10-08-2009, 04:58
Здраствуйте, вообщем возникла такая проблема скачал я скрипт Proxy checker 5 с сайта _http://www.proxy-tool.net установил себе на локальный сервер, следовав инструкции по установке _http://www.proxy-tool.net/forum/showthread.php?t=96

Но при попытке запуска в броузере вылетает оошибка такого типа

Parse error: syntax error, unexpected T_STRING in D:\sites\website1\www\proxy5\config.php on line 7

В редакторе открыв config.php видно, что 7 строчка define('CONF_LOGIN_TO', 'Proxy/Worked/');

<?php

// URLS AND DIRECTORIES
define('CONF_URL_ROOT', 'https://www.find.com/www/proxy5/');
define('CONF_URL_BASE', '/proxy5/');
define('CONF_PHP_PATH', 'D:\Program Files\PHP5\');
define('CONF_LOGIN_TO', 'Proxy/Worked/');

Cпасибо за помощь.

Sham
10-08-2009, 11:31
define('CONF_PHP_PATH', 'D:\Program Files\PHP5\'); »
вы случайно экранировали кавычку, в таких случаях сам слеш нужно экранировать.
define('CONF_PHP_PATH', 'D:\Program Files\PHP5\\');

Romanio
10-08-2009, 15:08
Sham,

// URLS AND DIRECTORIES
define('CONF_URL_ROOT', 'https:/www.find.com/www/proxy5/');
define('CONF_URL_BASE', '/proxy5/');
define('CONF_PHP_PATH', 'D:\Program Files\PHP5\\');
define('CONF_LOGIN_TO', 'Proxy/Worked');

// DATABASE
define('CONF_DBHOST', 'localhost');
define('CONF_DBUSER', 'root');
define('CONF_DBPASS', 'armor');
define('CONF_DBNAME', 'proxycheker');


Поменял слеш открывает теперь пустую страницу.

Sham
10-08-2009, 16:15
а там наверное завершающий слеш вообще не нужен, т.е. define('CONF_PHP_PATH', 'D:\Program Files\PHP5');также возможны нюансы в работе самого скрипта, которые лучше узнавать у автора.

Romanio
11-08-2009, 00:54
также возможны нюансы в работе самого скрипта, которые лучше узнавать у автора. »

Автор молчит, как партизан.

Посмотрел и нашел в папке log error.txt в котором повторяется все время эта строка.

[2009-08-10 20:19:41] [User error] Cannot parse path on line 61 in D:\sites\website1\www\proxy5\classes\class.Dispatcher.php

Вот модуль, где выпадает ошибка class.Dispatcher.php


// SYNONYM TO PATH
$this->Path = $this->SynonymToPath($this->Path);
$this->SetupEnvironment($this->Path);
list($this->ModuleName, $this->ActionName) = self::ParsePath($this->Path);
if (empty($this->ModuleName) || empty($this->ActionName)) {
trigger_error('Cannot parse path', E_USER_ERROR); <- 61 строка
exit;

Sham
11-08-2009, 03:46
define('CONF_URL_ROOT', 'https:/www.find.com/www/proxy5/'); »
тут еще ошибка (двойной слеш), и наверняка нужен прямой урл (без /www/ - если www - корень).
define('CONF_URL_ROOT', 'https://www.find.com/www/proxy5/');

androidz
20-08-2009, 16:09
Товарищи, помогите разобраться..

Код site.php:

<?php
$a = array(
index => 'pages/main.php');
readfile($a[$_GET['x']]);
?>

Захожу на site.php?x=index ,
всё казалось бы радует, но станица не ассоциируется с PHP, тобишь php код на main.php не срабатывает, а срабатывает только HTML.

То есть суть моего вопроса :
Что мне добавить в код (site.php) чтобы в конечном файле (main.php) работал PHP код.

Sham
20-08-2009, 17:02
см include (http://ru.php.net/manual/en/function.include.php)
индекс массива нужно в кавычки (если не константа)...

Ingolder
21-08-2009, 15:04
плохо разбираюсь в php.
надо сделать форму обратной связи с сайта.
скачал скрипт, помогите пожалуйста разобраться.
суть такова:

в отдельном файле форма:
<p>Contact the Webmaster.</p>
<form action="sendmail.php" method=POST>
<input type="text" name="form_name">
<input type="text" name="form_mail">
<textarea cols=40 rows=5 name="form_message"></textarea>
<input type=submit value="Send Mail">
</form>


отдельно сама отправка (sendmail.php):
<?
$email = "admin@mymail.ru";
$subject = "subject";
if ($field_name <> "" and $field_mail <> "" and $field_message <> "") {
mail("$email", "$subject", "From: $form_name\nMail: $form_mail\nMessage:\n\n$form_message");
$msg = "Your message has been sent, thank you.";
} else {
$msg = "All fields are required, push the back button to fill out the rest.";
}
?>
<p><? echo $msg; ?></p>
отправляю письмо, он пишет что All fields are required, push the back button to fill out the rest, хотя всё заполнено
=(
буд-то он их не видит\не цепляет из первого файла

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


if ($field_name = "" or $field_mail = "" or $field_message = "") {
$msg = "All fields are required, push the back button to fill out the rest.";
} else {
mail("$email", "$subject", "From: $f_name\nMail: $f_mail\nMessage:\n\n$f_message");
$msg = "Your message has been sent, thank you.";
}

ничего непонимаю (

Coutty
21-08-2009, 16:19
В форме используются имена form_name, form_mail, form_message, а в скрипте уже почему-то field:
if ($field_name <> "" and $field_mail <> "" and $field_message <> "")
Исправьте переменные на $_POST['form_name'], $_POST['form_mail'], $_POST['form_message'] и заодно дальше в скрипте на эти же.

Ingolder
21-08-2009, 18:15
да, простите, с переменными ошибся. везде привёл к одинаковому виду но всёравно не работает:
form.php:

<form action="sendmail.php" method=POST>
<input type="text" name="form_name">
<input type="text" name="form_mail">
<textarea cols="40" rows="5" name="form_message"></textarea>
<input type=submit value="Send Mail">
</form>


sendmail.php:

<?
$email = "admin@mail.com";
$subject = "sublect";
if ($form_name <> "" and $form_mail <> "" and $form_message <> "") {
mail("$email", "$subject", "From: $form_name\nMail: $form_mail\nMessage:\n\n$form_message");
$msg = "Your message has been sent, thank you.";
} else {
$msg = "All fields are required, push the back button to fill out the rest.";
}
?>
<p><? echo $msg; ?></p>

не работает, не понимаю почему. опять выдаёт что All fields are required, push the back button to fill out the rest, хотя всё заполнено


делаю по вашему, правильно ли я вас понял?:в sendmail надо было заменить переменные или как ?
sendmail:

<?
$email = "admin@mail.com";
$subject = "sublect";
if ($_POST['form_name'] <> "" and $_POST['form_mail'] <> "" and $_POST['form_message'] <> "") {
mail("$email", "$subject", "From: $_POST['form_name']\nMail: $_POST['form_mail']\nMessage:\n\n$$_POST['form_message']");
$msg = "Your message has been sent, thank you.";
} else {
$msg = "All fields are required, push the back button to fill out the rest.";
}
?>
<p><? echo $msg; ?></p>

при таком варианте он выдаёт при нажатии кнопки send:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/tvelcomp/public_html/admin2/sendmail.php on line 5


p.s. всё корректно заработало когда в строчке mail() оставил как было и не стал заменять на $_POST..
точнее, он проверяет корректно - если есть пустые ячейки то не посылает, а если всё нормально - то мне на мыло приходит письмо, но пустое:
From:
Mail:
Message:
без содержания..

ничего не понимаю, почему мы в этом случае пишем по разному, что это вообще значит?

Coutty
21-08-2009, 18:38
ssage:\n\n$$_POST['form_message']") »
В этом куске кода есть ошибка - два доллара.
Но вообще я бы не стал так явно использовать эти переменные. Я бы написал примерно так:

mail($email, $subject, "From: " . $_POST['form_name'] . "\nMail: " . $_POST['form_mail'] . "\nMessage:\n\n" . $_POST['form_message']);

Обратите внимание на кавычки.


Вы, видимо, учились php по старым книжкам. Раньше по умолчанию в php.ini была настройка register_globals = "on". И тогда все переменные из формы можно было использовать напрямую - как вы используете в функции mail(). Но потом выяснилось, что это огромная дыра в безопасности, и эту опцию стали отключать. Поэтому когда вы передаёте параметры методом post, все они попадают в массив $_POST. Для get - $_GET. Можете в начале скрипта написать print_r($_POST); чтобы увидеть его содержимое. Так вот, содержимое поля form_name будет получено скриптом под именем $_POST['form_name']. Разумеется, просто переменной $form_name не будет. Вот вам в теле письма ничего и не приходит.

Ingolder
21-08-2009, 18:46
при исправлении двух долларов на один всёравно выдаёт
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/tvelcomp/public_html/admin2/sendmail.php on line 5

ваш же вариант заработал отменно. в кавычках было дело, он не поспринимал как переменные а как текст чтоле?

Coutty
21-08-2009, 18:55
Возможно. Точно не знаю. Но чтобы такие ситуации не возникали, переменные выношу за кавычки почти всегда (кроме самых примитивных случаев).
И вот тут ещё странная конструкция:
if ($_POST['form_name'] <> "" and $_POST['form_mail'] <> "" and $_POST['form_message'] <> "") »
Обычно знак "не равно" обозначается так: !=
Но когда проверяют наличие значения переменной, используют функцию isset():
if (isset($_POST['form_name']) && isset($_POST['form_mail']) && isset($_POST['form_message'])) ...
Главное - поставить нужное количество скобочек ;)

Ingolder
21-08-2009, 20:02
спасибо, приму к сведению.

какая бы ни была странная эта инструкция <> она работает =)

Sham
21-08-2009, 20:47
если переменная существует, но пустая, isset будет true, поэтому в этом случае будет удобнее empty (http://ru.php.net/manual/en/function.empty.php) if (!empty($var)).
В этом куске кода есть ошибка - два доллара. »
вообще $$var это валидная конструкция и означает, что имя переменной - это ее значение (т.е. если $var = 'real' то $$var это $real)...
в кавычках было дело, он не поспринимал как переменные а как текст чтоле? »
внутри двойных кавычек или heredoc переменные с индексами массива будут в виде: "... $var[index] ..." или "... {$var['index']} ..."

San4ous
25-08-2009, 14:20
Всем доброго времени суток! Подскажите пожалуйста новичку, возможно ли определить позицию тестовового курсора в элементе textarea при помощи JavaSript? если возможно то как?




© OSzone.net 2001-2012