Показать полную графическую версию : Общие вопросы по коду
Страниц :
1
2
3
4
5
6
7
8
[
9]
10
11
12
13
14
15
16
17
18
19
20
21
22
Использую такой 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>
proxy, Рабоает, но ВСЕ русские буквы в виде кракозябр. Видимо проще будет найти другой скрипт.
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
Здраствуйте, вообщем возникла такая проблема скачал я скрипт 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пасибо за помощь.
define('CONF_PHP_PATH', 'D:\Program Files\PHP5\'); »
вы случайно экранировали кавычку, в таких случаях сам слеш нужно экранировать.
define('CONF_PHP_PATH', 'D:\Program Files\PHP5\\');
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');
Поменял слеш открывает теперь пустую страницу.
а там наверное завершающий слеш вообще не нужен, т.е. define('CONF_PHP_PATH', 'D:\Program Files\PHP5');также возможны нюансы в работе самого скрипта, которые лучше узнавать у автора.
также возможны нюансы в работе самого скрипта, которые лучше узнавать у автора. »
Автор молчит, как партизан.
Посмотрел и нашел в папке 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;
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 код.
см 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.";
}
ничего непонимаю (
В форме используются имена 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:
без содержания..
ничего не понимаю, почему мы в этом случае пишем по разному, что это вообще значит?
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
ваш же вариант заработал отменно. в кавычках было дело, он не поспринимал как переменные а как текст чтоле?
Возможно. Точно не знаю. Но чтобы такие ситуации не возникали, переменные выношу за кавычки почти всегда (кроме самых примитивных случаев).
И вот тут ещё странная конструкция:
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
спасибо, приму к сведению.
какая бы ни была странная эта инструкция <> она работает =)
если переменная существует, но пустая, 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']} ..."
Всем доброго времени суток! Подскажите пожалуйста новичку, возможно ли определить позицию тестовового курсора в элементе textarea при помощи JavaSript? если возможно то как?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC