Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Веб - Программирование > PHP

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 07.01.2012, 23:56   #1
Пользователь
 
Аватар для badboychik
 
Пол:Мужской
Регистрация: 08.11.2006
Сообщений: 93
Репутация: 22
Question Найдите ошибку,(помогите начинающим)

Помогите, поконцове должен выдать they are equal
<html>
<title></title>
<body>
<?php
$a = 1;
$b = 2;
echo "a is ".$a."<br>";
echo "b is ".$b."<br>";
echo "the summ is ".($a + $b)."<br>";
if ($a == $b) echo "they are equal!!!";
else echo "shota ne tag"."<br>";

$a = $b - 1;
//почему-то $a не изменяет значение, может не правилен синтаксис?

echo "priplusovali k a 1chku<br>";
echo "a is ".$a."<br>";
echo "b is ".$b."<br>";

if ($a == $b) echo "they are equal!!!";
else echo "shota ne tag";


?>
__________________
В тумане карнавала шутов, так тяжело понять кто есть кто. Это куда проще сделать по каретам разъезжающихся гостей.
badboychik вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Рекомендуем супермаркет - м-видео ноутбуки цены - Подарок каждому покупателю!онлайн ибпtodoist и +яндекс календарьбарнхаус 3 на 5Компьютерная техника в КНС Нева - ноутбук hp 17 - специальные условия для корпоративных клиентов в Санкт-Петербурге.


Старый 08.01.2012, 10:29   #2
errante
Постоялец
 
Пол:Мужской
Регистрация: 25.03.2005
Сообщений: 789
Репутация: 788
По умолчанию Re: Найдите ошибку,(помогите начинающим)

Все правильно:
Цитата:
Сообщение от badboychik Посмотреть сообщение
if ($a == $b)

условие если переменная а = b то they are equal
а=1 b=2 - условие не выполняется значит else echo "shota ne tag"."<br>";

Цитата:
Сообщение от badboychik Посмотреть сообщение
$a = $b - 1;
//почему-то $a не изменяет значение, может не правилен синтаксис?

а с чего переменная а у тебя поменяет значение, рассматриваем:
b=2, от 2 отнять 1 и присвоить значение переменной А
переменная а =1 - все правильно

напиши вместо $a = $b - 1; следующее $b = $b-1;
и все будет работать

Последний раз редактировалось errante; 08.01.2012 в 10:33..
errante вне форума
 
Ответить с цитированием Вверх
Старый 11.02.2014, 23:06   #3
nvbpmgeorge
Неактивный пользователь
 
Пол:Мужской
Регистрация: 11.02.2014
Сообщений: 1
Репутация: 0
По умолчанию Помогите, пожалуйста!

Подскажите, пожалуйста, новичку.
Исходные данные. Есть файл index.html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Отправка сообщения с вложением</title>
<link type="text/css" rel="stylesheet" href="style.css">
</head>
<body>
<H3> <center><font color="#1E90FF">Отправка сообщения с вложением</font></H3>
<center>
<form action="simple_mail.php" enctype="multipart/form-data" method="post">
<p>Кому: <input type="text" name="mail_to" maxlength="32"></p>
<p>Subject: <input type="text" name="mail_subject" maxlength="64"></p>
<p>Сообщение: <textarea cols="50" rows="8" name="mail_msg"></textarea></p>
<p>File: <input type="file" name="mail_file" maxlength="64"></p>
<p><input type="submit" value="Отправить"></p>
</form>
</table>
</center>
</body>
</html>

Есть файл simple_mail.php:
<?php
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("|^([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is",
strtolower($email))) exit("Введите адрес в виде [email protected]");
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['mail_file']['name'];
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
}
$thm = $_POST['mail_subject'];
$msg = $_POST['mail_msg'];
$mail_to = $_POST['mail_to'];
// Отправляем почтовое сообщение
if(empty($picture)) mail($mail_to, $thm, $msg);
else send_mail($mail_to, $thm, $msg, $picture);
// Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)
function send_mail($mail_to, $thema, $html, $path)
{ if ($path) {
$fp = fopen($path,"rb");
if (!$fp)
{ print "Cannot open file";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
}
$name = "file.ext"; // в этой переменной надо сформировать имя файла (без всякого пути)
$EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
$boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers .= "From: [email protected]";

$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=windows-1251$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL; // раздел между заголовками и телом html-части
$multipart .= chunk_split(base64_encode($html));

$multipart .= "$EOL--$boundary$EOL";
$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";
$multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
$multipart .= chunk_split(base64_encode($file));

$multipart .= "$EOL--$boundary--$EOL";

if(!mail($mail_to, $thema, $multipart, $headers))
{return False; //если не письмо не отправлено
}
else { //// если письмо отправлено
return True;
}
exit;
}
?>

Проблема в следующем: все поля формы, включая вложения, заполнены.
После нажатия "Отправить", в браузере появляется следующее сообщение:


<?php
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("|^([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is",
strtolower($email))) exit("Введите адрес РІ РІРёРґРµ [email protected]");
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['mail_file']['name'];
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
}
$thm = $_POST['mail_subject'];
$msg = $_POST['mail_msg'];
$mail_to = $_POST['mail_to'];
// Отправляем почтовое сообщение
if(empty($picture)) mail($mail_to, $thm, $msg);
else send_mail($mail_to, $thm, $msg, $picture);
// Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)
function send_mail($mail_to, $thema, $html, $path)
{ if ($path) {
$fp = fopen($path,"rb");
if (!$fp)
{ print "Cannot open file";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
}
$name = "file.ext"; // в этой переменной надо сформировать имя файла (без всякого пути)
$EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
$boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers .= "From: [email protected]";

$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=windows-1251$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL; // раздел между заголовками и телом html-части
$multipart .= chunk_split(base64_encode($html));

$multipart .= "$EOL--$boundary$EOL";
$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";
$multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
$multipart .= chunk_split(base64_encode($file));

$multipart .= "$EOL--$boundary--$EOL";

if(!mail($mail_to, $thema, $multipart, $headers))
{return False; //если не письмо не отправлено
}
else { //// если письмо отправлено
return True;
}
exit;
}
?>

Вопрос: что я делаю не так?
nvbpmgeorge вне форума
 
Ответить с цитированием Вверх
Старый 12.02.2014, 06:59   #4
errante
Постоялец
 
Пол:Мужской
Регистрация: 25.03.2005
Сообщений: 789
Репутация: 788
По умолчанию Re: Найдите ошибку,(помогите начинающим)

Ну в первую очередь у тебя хост поддерживает php?

Ты же на выходе получаешь свой файл => php не работает.
errante вне форума
 
Ответить с цитированием Вверх
Старый 12.02.2014, 09:55   #5
icydrago
Неактивный пользователь
 
Пол:Мужской
Регистрация: 11.02.2014
Сообщений: 20
Репутация: 1
По умолчанию Re: Найдите ошибку,(помогите начинающим)

А ещё кодировка файла должна быть utf-8.
icydrago вне форума
 
Ответить с цитированием Вверх
Старый 23.09.2014, 09:47   #6
Господин ПЖ
Новичок
 
Пол:Мужской
Регистрация: 17.04.2014
Сообщений: 8
Репутация: 0
По умолчанию Re: Найдите ошибку,(помогите начинающим)

Цитата:
Сообщение от icydrago Посмотреть сообщение
А ещё кодировка файла должна быть utf-8.

Кодировка UTF8 без BOM, в Notepad ++ можно перекодировать, если проблема в этом.
Господин ПЖ вне форума
 
Ответить с цитированием Вверх
Старый 16.01.2015, 12:40   #7
iag99
Новичок
 
Пол:Мужской
Регистрация: 16.01.2015
Сообщений: 5
Репутация: 0
По умолчанию Re: Найдите ошибку,(помогите начинающим)

По поводу кодировки и вывода в браузер.
Есть только 1 причина. Интерпретатор php не разобрал ваш файл.
1) Файл в настройках сервера не обрабатывается через php. Для этого необходимо посмотреть настройки apachе например
2) Проблема в кодировке и когда в потоке идет тег <? или <php он не определяется сервером и не передается в Интерпретатор.
iag99 вне форума
 
Ответить с цитированием Вверх
Старый 14.05.2015, 07:17   #8
LLIypLLIuk
Неактивный пользователь
 
Пол:Мужской
Регистрация: 14.05.2015
Сообщений: 5
Репутация: 0
По умолчанию Re: Найдите ошибку,(помогите начинающим)

скорее всего кодировка, сделайте UTF-8 без BOM, иначе перед <? может стоять какой-либо невидимый символ, который не будет обрабатываться интерпритатором
LLIypLLIuk вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку в ассемблере fosgen29 Архив 6 18.03.2010 19:32
Помогите найти ошибку gvm2005 PHP 3 10.06.2008 17:40
помогите исправить ошибку www007 Microsoft Windows 10 05.11.2007 12:10
помогите найти ошибку в скрипте reklamist_dv Веб - Программирование 7 06.08.2007 19:10
помогите решить ошибку eiexploer.exe milka_ Архив 13 21.04.2007 20:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 09:18. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.18322 секунды с 13 запросами