Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 605
от 26.02.2007, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 413, Экспертов: 55
В номере:Вопросов: 17, Ответов: 36


Вопрос № 76190: Здраствуйте ув. эксперты. Может кто нибудь знает как разбить текст на строки по опред. количеству символов. И как можно посчитать количестве букв в строке. Спасибо. ...
Вопрос № 76200: Товарищи эксперты подскажите пожалуйста как можно реализовать выбор строк из таблицы в СВОБОДНОМ порядке. Спасибо за столь полезную рассылку....
Вопрос № 76204: Очень хочется создать на сайте рейтинг других сайтов - ну, чтобы люди могли зарегестрировать свои ресурсы, получить счетчик на сайт и участвовать в рейтинге! И чтобы их ресурсы в своеобразный каталог добавлялись! Как это можно организовать?...
Вопрос № 76242: Добрый день, коллеги! Я начал изучать Smarty. В одной книжке прочитал, что синтаксис Smarty может узнавать некоторыми редакторами и по-особенному подсвечиваться. Так вот, может, кто-нибудь знает, есть такие приложения, где распознается синтаксис ...
Вопрос № 76245: Здраствуйте ув. эксперты. У меня вопромик: как сделать бекап базы данных. Во многих движках есть такая функция. Может кто знает как это осуществить. Спасибо....
Вопрос № 76293: Здравствуйте. Можно ли с помощью PHP(5) послать на определенный IP произвольный текст на произвольный порт? Что нибуть дополнительно надо знать для обработки этого теста получателем?(Формат, Протокол или еще что то)...
Вопрос № 76297: Здравствуйте, эксперты уважаемые! Мне необходимо сделать немногое -- загрузить файлы на сервер. Как я себе это представляю: 1. Выбираю файл с жёсткого диска (<input type="file">) 2. Некий скрипт закидывает файл на серв...
Вопрос № 76324: ЗДратсвуйте,помогите разобраться где я ошибся (ну если чесно то не я).Вот есть такой код: <?php session_start(); if(!isset($_SESSION["login"])) # Если пользователь ИСЧО не авторизован, то далее скрипт попытается его...
Вопрос № 76357: Здравствуйте! Помогите в следующей ситуации. на сайте необходимо сделать 2 кнопочки: <input type=submit name=on value="Подписаться"> <input type=submit name=off value="Отказаться от рассылки"> ...
Вопрос № 76424: Здравствуйте, уважаемые экпрерты! Подскажите, пожалуйста, как делается защита от автоматического заполнения на форуме(в гостевой, доске объявлений)?? Заранее благодарен!...
Вопрос № 76429: Уважаемые Эксперты! Есть некий интернет-сервис, для пользования которым необходимо зарегистрироваться на сайте. Данные пользователей: пароли, логины и т.п. - хранятся в базе данных MySQL. Проблема в том, что в настоящее время пароли ...
Вопрос № 76451: Уважаемые эксперты,простите за мои тупые вопросы но назрел еще один! У меня стоит denwer я немогу понять почему много окдов неработает,хотя по логике они должны работать,я немогу их протестировать,возможно вы знаете как настроить denwer что бы вс...
Вопрос № 76512: hi! u menea problemka s saitom... nikak ne mogu zdelat' shtob zarabotal atot skript (on schitaet vse faili iz papki "SMILE" i esli esti nazvania faila v texte on meneaet evo na [cenzored]) <?php $s="*axekill* haha ...
Вопрос № 76533: Здравствуйте! Как можно заставить Russian Apache кэшировать отдаваемые страницы? P.S. Хостинг бесплатный holm.ru ..
Вопрос № 76676: Здравствуйте, Эксперты! Была у меня давно написана простейшая CMS для своих нужд, и был я ей очень доволен, суть её была в следующем: статьи с заголовками хранились в БД, и выводились в странице через например <?=$title?>, сейчас возникла н...
Вопрос № 76721: Здратсвуйте эксперты,эт снова я! Есть код: <?php include "config.php"; $save=$naame.$raz; if ($msg!="" && $name!=""){ $a="$save"; $time= Date ("h:i:d"); $msg=str...
Вопрос № 76730: Здравствуйте уважаемые! В таблице MySQL строки хранятся в кодировке KOI8-R. Необходимо выводить их в кодировке CP866. Конвертирую: convert_cyr_string($line["name"], "k", "a"); или convert_cyr_string($line...

Вопрос № 76.190
Здраствуйте ув. эксперты. Может кто нибудь знает как разбить текст на строки по опред. количеству символов.

И как можно посчитать количестве букв в строке.

Спасибо.
Отправлен: 17.02.2007, 20:22
Вопрос задал: Маторник Михаил (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Zolton007
Здравствуйте, Маторник Михаил!
Длина строки (кол-во букв в строке): int strlen(string $st)
Разбить текст на строки.... ща поипровизирую. Возможно есть другой способ, но вот:
$kolvo_simvolov=<количество символов>;
$counter=0;
$number=0;
for ($i=0; $i<strlen($text)-1; $i++)
{
if ($counter++<$kolvo_simvolov)
{
$str[$number].=$text[$i];
}
else
{
$counter=0;
$number++;
}
}
Это я так.... сходу написал. Тоесть в коде могут быть баги. Но, главное, смысл вроде понятен. Цикл от начала до конца строки, в котором считаем от 0 до кол-ва символов. Если считали указанное кол-во символов, обнуляем счетчик и наращиваем номер строки.
В итоге получится массив $str, в котором:
$str[0] - Первая строка
$str[1] - Вторая строка
....
$str[n] - n-я строка
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 17.02.2007, 21:01

Отвечает: Angel7
Здравствуйте, Маторник Михаил!

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

<?php
$string = "Hello, world!!!";
$string_len = strlen($string);
echo ($string_len);
?>


Удачи!
---------
Краткость приятна, когда она сочетается с ясностью ^_-
Ответ отправила: Angel7 (статус: Студент)
Ответ отправлен: 17.02.2007, 21:02

Отвечает: Бородин Александр Олегович
Здравствуйте, Маторник Михаил!
Похоже, у Zolton007 какая-то хрень написана. Разбить текст на строки определенной длины просто. Для этого используется функция substr(string $str, int $start, int $end). Чтобы узнать длину строки, используется функция strlen(string str).
Итак...
Будем резать строку порциями по 4 символа. Следите за мыслью!

Приложение:

---------
Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.

Ответ отправил: Бородин Александр Олегович (статус: 3-ий класс)
Ответ отправлен: 17.02.2007, 22:19

Отвечает: Илья Андреевич
Здравствуйте, Маторник Михаил!
вам точно нужны именно символы? а можно спросить зачем?:) для подобных целей есть функция wordwrap, она разбивает по словам
Ответ отправил: Илья Андреевич (статус: 10-ый класс)
Ответ отправлен: 18.02.2007, 06:29


Вопрос № 76.200
Товарищи эксперты подскажите пожалуйста как можно реализовать выбор строк из таблицы в СВОБОДНОМ порядке.
Спасибо за столь полезную рассылку.
Отправлен: 17.02.2007, 21:04
Вопрос задал: Илья Паравой (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, Илья Паравой!
Если в SQL-запросе не задана часть ORDER BY или GROUP BY, то по умолчанию записи выводятся в том порядке в котором записывались в базу (свободнее порядка не бывает).
Если же Вы имели в виду случайный порядок, то прийдется помучатся. Скорее всего от самой базы Вы ничего не добьетесь, поэтому прийдется "выгребать" все строки в массив, а потом пересортировать его в случайном порядке.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 19.02.2007, 10:25


Вопрос № 76.204
Очень хочется создать на сайте рейтинг других сайтов - ну, чтобы люди могли зарегестрировать свои ресурсы, получить счетчик на сайт и участвовать в рейтинге! И чтобы их ресурсы в своеобразный каталог добавлялись!

Как это можно организовать? Помогите, базы данных имеются, но пользоваться ими не умею, РНР в принципе понимаю, но не знаю как подступиться.

Заранее спасибо!
Отправлен: 17.02.2007, 21:18
Вопрос задала: Angel7 (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zolton007
Здравствуйте, Angel7!
Очень обширный вопрос =)
Надо создать в БД таблицу сайтов. Например с полями: id_сайта, название_сайта, краткое_описание_сайта, url-сайта, рейтинг (по-умолчанию ноль). Вот. Сделать форму для добавления записи нового ресурса. Сделать страничку со списком сайтов и ссылками/кнопками для голосования за сайт. При нажатии на ссылку, надо наращивать значение поля "рейтинг". При выводе сайтов, выборку можно сортировать по полю "рейтинг". Тока я вот недопонял... что значит счетчик? Вот именно чтобы народ голосовал у тя на сайте за разные ресурсы, или ты хочешь аналог, например, спайлога написать? :)) Если типа голосование за ресурсы - это реально и легко. Так, как я написал, например. НО работе с мускулом (MySQL) учиться тебе придется. Благо ресурсов достаточно.

---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 17.02.2007, 22:06
Оценка за ответ: 4

Отвечает: Алексей Смуриков
Здравствуйте, Angel7!
А вот и ресурс где вы можете скачать документацию по PHP и MySQL а также посмотреть примеры:
http://www.spravkaweb.ru/
---------
Из того, что я утратил больше всего мне жаль разум.....
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 18.02.2007, 09:57
Оценка за ответ: 4


Вопрос № 76.242
Добрый день, коллеги!
Я начал изучать Smarty. В одной книжке прочитал, что синтаксис Smarty может узнавать некоторыми редакторами и по-особенному подсвечиваться. Так вот, может, кто-нибудь знает, есть такие приложения, где распознается синтаксис Smarty? Заранее благодарен.
Отправлен: 18.02.2007, 09:08
Вопрос задал: Бородин Александр Олегович (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Селев Валерий
Здравствуйте, Бородин Александр Олегович!

PHPEclipse (рекомендую!)
PhpED
Vim
Ответ отправил: Селев Валерий (статус: 3-ий класс)
Ответ отправлен: 18.02.2007, 18:35
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо Вам за помощь!

Отвечает: Zolton007
Здравствуйте, Бородин Александр Олегович!
На 100% не уверен, но попробуй Zend Studio. Я его юзаю, но не юзаю смарти :) Вещь ваще суперская. Если не поможет со смарти, разочарованным не останешься, т.к. кодить на пхп в зенде приятно :)
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 18.02.2007, 19:30
Оценка за ответ: 5
Комментарий оценки:
Спасибо, я уже об этом подумал. 5 баллов за мысли в одном направлении :)))


Вопрос № 76.245
Здраствуйте ув. эксперты.
У меня вопромик: как сделать бекап базы данных.
Во многих движках есть такая функция.
Может кто знает как это осуществить.
Спасибо.
Отправлен: 18.02.2007, 10:02
Вопрос задал: Маторник Михаил (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Илья Андреевич
Здравствуйте, Маторник Михаил!
Вам надо восстановить или сохранить то, что есть?
Если второе, то вот: http://www.mysql.ru/docs/man/mysqldump.html
Если первое, то уже никак, если только хостинг не делает бэкапов.
Смысл бэкапа - обычное сохранение дампа, а потом его импорт в базу.
Ответ отправил: Илья Андреевич (статус: 10-ый класс)
Ответ отправлен: 18.02.2007, 14:47

Отвечает: Алексей Смуриков
Здравствуйте, Маторник Михаил!
Возможно ещё использование Sypex Dumper Lite (http://sypex.net/) при запрете выполнения внешних программ! Так же в нём можно посмотреть как это делается через скрипт!
---------
Из того, что я утратил больше всего мне жаль разум.....
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 18.02.2007, 15:32

Отвечает: Селев Валерий
Здравствуйте, Маторник Михаил!

Если есть возможность віполнить функцию system из пхп, то так:

<?php
$dbhost = имя хоста БД
$dbuser = логин
$dbpass = пароль
$dbname = имя бд

$backupFile = "backup.sql";
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname > $backupFile";
system($command);
include 'closedb.php';
?>

Иначе копай в сторону чего-то наподобие http://www.hotscripts.com/Detailed/27576.html
Ответ отправил: Селев Валерий (статус: 3-ий класс)
Ответ отправлен: 18.02.2007, 18:32


Вопрос № 76.293
Здравствуйте.

Можно ли с помощью PHP(5) послать на определенный IP произвольный текст на произвольный порт?
Что нибуть дополнительно надо знать для обработки этого теста получателем?(Формат, Протокол или еще что то)
Отправлен: 18.02.2007, 15:43
Вопрос задал: Alexo (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Илья Андреевич
Здравствуйте, Alexo!
http://ru2.php.net/manual/en/function.fsockopen.php
и там внизу примеров тьма.
в общем виде: открываем (fsockopen), посылаем (fwrite)
Ответ отправил: Илья Андреевич (статус: 10-ый класс)
Ответ отправлен: 19.02.2007, 01:44
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Это один из тех случаев где для начала надо было посмотреть документацию=)


Вопрос № 76.297
Здравствуйте, эксперты уважаемые!
Мне необходимо сделать немногое -- загрузить файлы на сервер.
Как я себе это представляю:
1. Выбираю файл с жёсткого диска (<input type="file">)
2. Некий скрипт закидывает файл на сервер туда, куда я хочу.
Вот этого вот скрипта мне и не хватает. :(
Подскажите, пожалуйста, как это организовать на PHP?
Спасибо заранее.
Отправлен: 18.02.2007, 16:08
Вопрос задал: SPEKTR (статус: 3-ий класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, SPEKTR!
Вот статья по этой теме: http://phpclub.ru/detail/article/upload. Как и полагается - с примерами. Желаю удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 18.02.2007, 16:16
Оценка за ответ: 5
Комментарий оценки:
Во! Очень хорошо, спасибо. Причём и за ссылку на статью, и за ссылку на сайт.

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, SPEKTR!

В приложении - рабочий пример (создавал сам).

Удачи!

Приложение:

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!

Ответ отправил: Устинов Сергей Евгеньевич (статус: Практикант)
Ответ отправлен: 18.02.2007, 16:30
Оценка за ответ: 5
Комментарий оценки:
Ага, спасибо!

Отвечает: Селев Валерий
Здравствуйте, SPEKTR!

Из мануала по пхп:

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
<!-- MAX_FILE_SIZE must precede the file input field -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<!-- Name of input element determines name in $_FILES array -->
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded. ";
} else {
echo "Possible file upload attack! ";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>
Ответ отправил: Селев Валерий (статус: 3-ий класс)
Ответ отправлен: 18.02.2007, 17:50

Отвечает: Zolton007
Здравствуйте, SPEKTR!
Если надо просто тупо закинуть файл в нужную директорию, то ниче особенного не надо.
Просто, например:
index.html
....
<form action="upload.php" enctype="multipart/form-data" method="post">
<input type="file" name="file" size="<максимальный размер файла>">
<input type="submit">
</form>
....

upload.php
....
if (!is_uploaded_file($file))
{
$body.="<center>Что-то не так! Попробуйте еще раз!</center> ";
}
else
Copy($file, 'имя_директории/'.$file_name);

...
На самом деле можно напихать всяких проверок. Но это на Ваше усмотрение. Например проверку на MIME-тип закачиваемого файла, на его имя (типа фильтр поставить, чтобы не закачивали файлы содержащие пробелы. Или просто убивать пробелы и др. некорректные символы из имен файлов). Ваще чего угодно можно понаворотить =) это и называется скрипт закачки. Т.е. обработать дополнительно принимаемые файлы. Если это картинки, то их можно уменьшать спец. скриптом и многое другое. Я написал простейший пример. Просто Вам надо воспользоваться поисковиком. Написать туда, например "закачка фалов нв сервер при помощи PHP". по выданным сылкам можно полазить и найти много фич и плюшек по этому поводу. Я не могу вам привести сложный пример закачки файлов, т.к. ИМХО для каждого типа фалов и в различных ситуациях нужны разные, специфичные скрипты. Благодарю за внимание.
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 18.02.2007, 20:39


Вопрос № 76.324
ЗДратсвуйте,помогите разобраться где я ошибся (ну если чесно то не я).Вот есть такой код:

<?php
session_start();
if(!isset($_SESSION["login"]))
# Если пользователь ИСЧО не авторизован, то далее скрипт попытается его авторизовать
{
if(isset($_POST["login"]))
# Если в поле ввода логина введен текст, то скрипт проверит его на принадлежность кому-либо из пользователей
{
$i = 0;
while($text = file("user_pass.txt"))
# скрипт проверяет первые элементы всех строк на схожесть с $_POST["login"]
{
$userpass = explode("|",$text[$i]);
if($userpass[0] !== $_POST["login"])
# Если не совпало, то скрипт продолжит поиск
$i++;
else
# если совпало, то скрипт проверяет пароль, соответствующий логину, на похожесть с паролем, введеным в форму
{
if($_POST["pass"] == $userpass[1])
{
# Пароль введен правильно - можно создавать переменную сессии, которая и будет "обозначать" авторизованного пользователя
$_SESSION["login"] == $_POST["login"];
}
else
# Выводит предупреждение
echo "Пароль введен неверно!";
# БЕЗУСЛОВНО завершает поиски
break;
}
#переход к следующей итерации
}
#Если логин неверен, генерируется предупреждение
if(!isset($_SESSION["login"]) && isset($_POST["login"]))
echo "Пароль введен неверно!";
}
else
# Этим словом скрипт обзывает Вас, если Вы и не пытаетесь авторизоваться :)))
echo "Вы гость здесь!";
}
?>

цикл незаканциваеться,и опстоянно выдает ошибкИ

Notice: Undefined offset: 5 in z:\\home\\localhost\\www\\indexx.php on line 13

если можете помогите!
Отправлен: 18.02.2007, 20:01
Вопрос задал: DarkHacker (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Zolton007
Здравствуйте, DarkHacker!
Ну вот прям смари:
.....
$i = 0;
while($text = file("user_pass.txt"))
# скрипт проверяет первые элементы всех строк на схожесть с $_POST["login"]
{
$userpass = explode("|",$text[$i]);
if($userpass[0] !== $_POST["login"])
.....

Ну вот что это такое? :))) результат работы ф-ции file - массив-список. Тепрь подумай, откуда докуда ты пускаешь цикл. Далее:
$userpass = explode("|",$text[$i]); - Вот это надо было сделать перед циклом.
А потом че-нить типа:
while($i < sizeof($userpass))
И ВПЕРЕД! :)) и с песней!

На самом деле в приведенном коде много баг. Вот, например, еще одна (распространенная, кстати):

while($text = file("user_pass.txt"))

= - это оператор присваивания, а не сравнения.
== - вот оператор сравнения.

По делфей начинал программулировать? :))

---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 18.02.2007, 21:14
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Но просто код писал не я! Если можете исправте код полностью (я вас очен,очень прошу) если вам нетрудно,

А начинал я рпограмировать на VB...

Заранее благодарен!

С уважением DarkHacker

Отвечает: Илья Андреевич
Здравствуйте, DarkHacker!
См. приложения. надеюсь разберетесь без комментариев сможете.
Признаюсь честно, но вы меня пугаете все больше и больше :)))
на самом деле можно просто почитать хорошие мануалы и не париться)

Приложение:

Ответ отправил: Илья Андреевич (статус: 10-ый класс)
Ответ отправлен: 19.02.2007, 02:02


Вопрос № 76.357
Здравствуйте! Помогите в следующей ситуации.

на сайте необходимо сделать 2 кнопочки:
<input type=submit name=on value="Подписаться">
<input type=submit name=off value="Отказаться от рассылки">
мне необходимо различать какая кнопка была нажата, т.е.
на действие «Подписать» -

/* составить запрос для вставки информации о клиенте в таблицу */
$query = "INSERT INTO $userstable VALUES(\'$email\')";

на действие «Отказаться от рассылки» -
/* составить запрос на удаление информации о клиенте из таблицы */
$query="delete from $userstable where email = " . $idno;

я так понимаю по имени, но только как это реализовать на PHP, уж простите новичок :(

Заранее благодарен!
Отправлен: 19.02.2007, 00:04
Вопрос задал: DennisKraft (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Mo-skin
Здравствуйте, DennisKraft!
Проверить какая кнопка была нажата можно так:
if (isset($_POST['on'])) { echo "Нажата кнопка с именем on " };
if (isset($_POST['off'])) { echo "Нажата кнопка с именем off " };

В приложении рабочий пример.
form.html - страница с формой.
subscribe.php - скрипт для обработки запроса.

P.S.: Если у формы метод=GET значит в скрипте меняем $_POST на $_GET.

Приложение:

---------
Чем больше женщину мы меньше, тем меньше больше мы ее!

Ответ отправил: Mo-skin (статус: 4-ый класс)
Ответ отправлен: 19.02.2007, 01:04
Оценка за ответ: 5

Отвечает: Zolton007
Здравствуйте, DennisKraft!
Один из вариантов решения - сделать 2 формы. Т.е., например:
<form action="script.php" method="POST">
<input type=submit name=on value="Подписаться">
<input type=submit name=off value="Отказаться от рассылки">
</form>

А в скрипте сделать проверку, на то, какой сабмит жмякнули:

script.php
.....

if (isset($_POST['On']))
/* составить запрос для вставки информации о клиенте в таблицу */
$query = "INSERT INTO $userstable VALUES(\'$email\')";

if (isset($_POST['Off']))
/* составить запрос для вставки информации о клиенте в таблицу */
$query = "INSERT INTO $userstable VALUES(\'$email\')";

....

Типа того =)
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 12:32


Вопрос № 76.424
Здравствуйте, уважаемые экпрерты! Подскажите, пожалуйста, как делается защита от автоматического заполнения на форуме(в гостевой, доске объявлений)?? Заранее благодарен!
Отправлен: 19.02.2007, 14:00
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Angel7
Здравствуйте, Андрющенко Вячеслав Васильевич!

Это делается, например, с помощью введения пользователем кода безопасности (с картинки). То есть в первом скрипте почти случайным образом выбираются 6 цифр (меняются при каждой загрузке скрипта). Они записываются в переменную $code и $code_confirm. Теперь генерируется картинка, включающая в себя цифры переменной $code, а в поле $code_confirm уже пользователь должен их записать. Затем, в обработчике формы, проверяется, верно ли введены цифры. Если да - то действие выполняется (например, в вашем случае отправка сообщения на форум), иначе - сообщение не проходит, и пользователю предлагают повторно ввести цифры.

Рабочий пример Вы можете скачать здесь: http://svoysite.ifolder.ru/1091631, файл небольшой и снабжен комментариями, но если и возникнут проблемы - пишите по указанному там имэйлу.

Также есть и другие способы защиты, например, ответ на вопрос, выполнение математических операций, но, на мой взгляд, картинковая - сама приемлемая.

Удачи!
---------
Краткость приятна, когда она сочетается с ясностью ^_-
Ответ отправила: Angel7 (статус: Студент)
Ответ отправлен: 19.02.2007, 15:25
Оценка за ответ: 5


Вопрос № 76.429
Уважаемые Эксперты!

Есть некий интернет-сервис, для пользования которым необходимо зарегистрироваться на сайте.
Данные пользователей: пароли, логины и т.п. - хранятся в базе данных MySQL.
Проблема в том, что в настоящее время пароли передаются и хранятся в открытом виде.
Меня тут припугнули, что передавать и хранить пароли в открытом виде очень опасно.

Буду признателен Вам за ответы:
1. Насколько это опасно?

2. Как стандартно организуется процедура шифрования паролей? (если пароли передавать в открытом виде нельзя, то как они передаются?)

3. Возможно, есть интернет-источники, где можно почитать об этом?

Заранее благодарю!
Отправлен: 19.02.2007, 14:43
Вопрос задал: chiefff (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Селев Валерий
Здравствуйте, chiefff!

1. Передавать пароли в открытом виде опасно тем, что их можно перехватить. Рекомендую почитать про SSL.
Сохранять пароли в открытом виде опасней, чем в зашифрованном. Тут, я думаю, без комментариев. Пароль - секретная информация, и стоит исключить любую возможность его непосредственного просмотра.

2. При сохранении паролей, сохранять не пароль, а его хеш, например md5. При последующих попытках логина, сравнивать хеш введённого пароля с сохранённым хешем.
При передаче - шифровать весь траффик используя SSL.

3. http://www.google.com/search?q=php+secure+password
;)
Ответ отправил: Селев Валерий (статус: 3-ий класс)
Ответ отправлен: 19.02.2007, 14:52

Отвечает: PVS
Здравствуйте, chiefff!
Хранить пароли в открытом виде опасно если злоумышленник может прочитать Вашу базу данных. Если он может в нее еще и писать, то хранить зашифрованые пароли просто бессмысленно (лишняя операция шифрования - лишнее торможение, а толку все равно никакого). Тут вопрос к надежности Вашего хостинга.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 19.02.2007, 15:10

Отвечает: Королёв Руслан
Здравствуйте, chiefff!
1. Хранить в открытом виде опасно, потомучто данные из БД у тебя могут украсть и тогда пользователи тебе благодарны не будут.
2. Пароли нужно хранить в "шифрованом" виде:
string md5(string $pass) она возвращает хэш-код MD5 строки $pass, теперь если у тебя украдут все пароли их раскодировать будет невозможно.
Ответ отправил: Королёв Руслан (статус: 4-ый класс)
Ответ отправлен: 19.02.2007, 15:33
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Zolton007
Здравствуйте, chiefff!
На сколько это опасно: если злоумышленник сможет выудить пароль юзера (например, при помощи како-нить SQL-инъекции), то ему уже ничто не составит преград и он просто тупо залогинится под этим несчастным юзером и натворить делов. Процедура шифрования: самое простое и повсеместно использующееся:
функция MD5($string) - это хэш-функция.

Источник... ды куча порталов и клубов по PHP/MySQL тематике есть =)
Например http://www.phpclub.ru/ или http://www.citforum.ru (тут не тока по PHP =) )
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 20.02.2007, 15:00
Оценка за ответ: 5
Комментарий оценки:
Спасибо


Вопрос № 76.451
Уважаемые эксперты,простите за мои тупые вопросы но назрел еще один!
У меня стоит denwer я немогу понять почему много окдов неработает,хотя по логике они должны работать,я немогу их протестировать,возможно вы знаете как настроить denwer что бы все приблизилось к максимальной похожести платных хостингов (мне кажеться они натсраивают их специфически почему у них скрипты все работают).ПОМОГИТЕ!!!

З.Ы. В скриптах нету ошибки...
Отправлен: 19.02.2007, 16:45
Вопрос задал: DarkHacker (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Ерёмин Андрей
Здравствуйте, DarkHacker!
К сожалению, телепатов среди экспертов нет. Настраивать Денвер практически НЕ нужно - его достаточно установить. Установка очень простая и ошибиться там невозможно. После установки нужно создать в каталоге home каталог с названием будущего адреса сайта (локального), в этом каталоге - каталог www и туда поместить все скрипты. Затем перезагрузить сервер с помощью ярлыка Restart Servers и открыть адрес в браузере. Если скрипт не работает, значит в нём есть ошибки, либо он работает с использованием дополнительных библиотек, которые не входят в стандартную поставку.
Крик души "не работает!" не даёт ровным счётом ничего. Включите показ ошибок командой error_reporting(E_ALL) и увидите, что именно не так в ваших скриптах.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 19.02.2007, 20:23

Отвечает: Илья Андреевич
Здравствуйте, DarkHacker!
Примеры неработающих скриптов в студию.
Денвер такой пакет, которйы не нуждается в доработке и настройке. там "всё для новичка"
Ответ отправил: Илья Андреевич (статус: 10-ый класс)
Ответ отправлен: 20.02.2007, 14:12
Оценка за ответ: 5
Комментарий оценки:
session_start();

function auth_user($login,$pass) {
$db=file("user_pass.txt");
if (is_array($db))
foreach ($db as $row) {
list($login,$pass)=explode("|",$row);
if ($login===$_POST['login'] and $pass===$_POST['pass']) {
# Пароль введен правильно - можно создавать переменную сессии, которая и будет "обозначать" авторизованного пользователя
$_SESSION["login"] == $_POST["login"];
return true;
}
}
}
if (!isset($_SESSION["login"]) or empty($_SESSION['login'])) {
// проверка на подлинность автризации, если она имеется
if (isset($_POST["login"]) and isset($_POST['pass'])) {
if (auth_user($_POST['login'],$_POST['pass'])) { echo "Логин и Пароль введены верно"; }
else echo "Логин либо Пароль введен неверно";
}
else echo "Вы гость здесь!";
}
?>

Вот он! Если можете помогите а то я уже незнаю толи я скрипты нерпаавельные пишу то ли это комп глюканутый (хотя все заново переустановил и винду и денвер но все также!)...

Отвечает: Zolton007
Здравствуйте, DarkHacker!
На самомо деле по умолчанию денвер нормульно настроен. Да, скрипты то может и "правильно" написаны, но, например: при написании скрипта у человека, кот. его писал была включена опция register_globals = On, в денвере по-дефолту она отключена. Т.е. переменные передаются POSTом, а в скрипте они принимаются не вот так $_POST["var"], а вот так: $var . Во втором случае isset($var) при выключенном register_globals = off работать не будет, а вот так isset($_POST["var"]) - будет.
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 20.02.2007, 15:24


Вопрос № 76.512
hi!
u menea problemka s saitom... nikak ne mogu zdelat' shtob zarabotal atot skript (on schitaet vse faili iz papki "SMILE" i esli esti nazvania faila v texte on meneaet evo na [cenzored])

<?php
$s="*axekill* haha *beta*";
$dh=opendir("Smile");
$f=readdir($dh);
while ($f) {

if (is_file("Smile/" . $f)) {
//*
$k = explode(".",$f);
$regxp="*$k[0]*";
echo $regxp;
while (ereg($regxp,$s,$smiles)) {
$s=ereg_replace($regxp,"[cenzored]",$s);
}
//*/
echo $f . "<br>";
}
$f=readdir($dh);
}
closedir($dh);
print_r($s);
?>

i esli u kovota esti skript dlea stavki smailov v chat ... postavte primer...
p.s: sorry za translit... nebilo vremeni :(
Отправлен: 19.02.2007, 22:41
Вопрос задал: spider (статус: 6-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Nexus
Здравствуйте, spider!

Если я правильно понял что нужно было - код в приложении. Не совсем понятно, зачем ты используешь замену по регулярке, если у тебя там регулярки по сути и нету. Обычная замена работает быстрее. Та и preg_replace должен работать быстрее чем ereg_replace, если верить мануалу ;)

На счет вставки смайлов, вот:
$message = str_replace(":)","<img src='icons/icon_smile.gif' border='0' alt=':)'/>",$message);
Вместо первых двух аргументов можно использовать массивы.

Приложение:

Ответ отправил: Nexus (статус: 5-ый класс)
Ответ отправлен: 20.02.2007, 00:33
Оценка за ответ: 5
Комментарий оценки:
thanks


Вопрос № 76.533
Здравствуйте!

Как можно заставить Russian Apache кэшировать отдаваемые страницы?

P.S. Хостинг бесплатный holm.ru
Отправлен: 20.02.2007, 00:19
Вопрос задал: Данилевич Игорь Владимирович (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zolton007
Здравствуйте, Данилевич Игорь Владимирович!
Я сталкивался с этой проблемой именно на этом хостинге. Ответ - заплатить бабло за хостинг. Запрет кеширования они поставили специально.
---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 20.02.2007, 20:40
Оценка за ответ: 4
Комментарий оценки:
Вообще-то я его и выбрал, потому что бесплатный.
Если знаете, ответьте в мини-форум можно ли из .htaccess заставить в ответ на каждый запрос дополнительно слать заголовок "Cache-Control: private"?


Вопрос № 76.676
Здравствуйте, Эксперты!
Была у меня давно написана простейшая CMS для своих нужд, и был я ей очень доволен, суть её была в следующем: статьи с заголовками хранились в БД, и выводились в странице через например <?=$title?>, сейчас возникла необходимость вставить в статьи PHP код(он соответственно через echo не выводится корректно) и теперь я думаю как лучше мне прикрутить к моей существующей системе возможность создания новых модулей, например захочу я гостевуху прикрутить, как это правильней будет сделать, пока в голове тока мысль указывать в БД имя файла и потом выводить его includom.

З.Ы. Надеюсь понятно объяснил, хотя сам понимаю что каламбур получился :)
З.З.Ы. Интересно узнать идею, примеров с кодом не надо.
Отправлен: 21.02.2007, 00:15
Вопрос задал: Королёв Руслан (статус: 4-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Nexus
Здравствуйте, Королёв Руслан!

На счет первого - почитай про eval()

На счет модулей - вариант хранения имени скрипта имхо вполне подойдет. У меня это реализовано немного по-другому - у id-шника, передающегося index-у ставится приставка, т.е. например 1 - это статьи, 2 - модули и т.п., если передан id-шник с первой цифрой 2, значит инклудится файл в котором прописано соотвтествие id и модуля, и, если данный модуль присутствует в конфигурации, инклудится соотв. класс и т.д.
Ответ отправил: Nexus (статус: 5-ый класс)
Ответ отправлен: 21.02.2007, 16:48
Оценка за ответ: 5
Комментарий оценки:
Спасибо, eval 100% лекарство моей проблемы, и с модулями всё понятно, пошёл лепить дальше.


Вопрос № 76.721
Здратсвуйте эксперты,эт снова я! Есть код:

<?php
include "config.php";
$save=$naame.$raz;
if ($msg!="" && $name!=""){
$a="$save";
$time= Date ("h:i:d");
$msg=str_replace(" ","<br> ",$msg);
$soo=" <table bgcolor="#C5CCFE"><td>Имя: $name</td><td>Время: $time</td><td>E-mail: <a href="mailto:$email">Написать</a></td><td>Адрес: $stret</td><td>Телефон: $tel</td><td>Цена: $money</td><div bgcolor="#6AA7F0"><table><td>$msg </td></td></table><hr>";

$fp=fopen($a,"a+");
$fw=fwrite($fp,$soo);
fclose($fp);}

include("$save")

?>

</body>

Как мне осуществить такое действие,мне нужно что когда в файле который обозначаеться как $save когда тсает больше 10 сообщений (а это 10 строк),слздавался новый файл и в него были положены последние 10 сообщений,а на страницуе 1 были новые сообщения,что-то типо такй функции которая есть в форуме,если можете помогите!

Заранее благодарен!

С уважением DarkHacker
Отправлен: 21.02.2007, 10:54
Вопрос задал: DarkHacker (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Илья Андреевич
Здравствуйте, DarkHacker!
1) хранить лишний HTML-код в файлах абсолютно не нужно.
2) хранить все данные можно в одном файле, зачем создавать их кучи? Вы видимо хотели сделать каждый файл как каждую страницу ? бред
3) может вас просто нужна функция постраничного вывода? положу её в приложение.

Храните данные также с разделителями, как и в примере с функцией авторизации.

Приложение:

Ответ отправил: Илья Андреевич (статус: 10-ый класс)
Ответ отправлен: 21.02.2007, 14:31
Оценка за ответ: 5
Комментарий оценки:
Спасибо буду пробовать...

Отвечает: Aster Aster Aster
Здравствуйте, DarkHacker!
Я так понял что в файл у вас заносятся ети сообщения в виде строк.Ну тогда я б сделал так чтоб с конца отбералось 10 сообщений,складывались в какой-то массив а затем выводились на первую страничку.А остальные, в своей последовательности, пусть выводятся по аналогии в остальных страничках...По крайней мере так на форумах реализовано...:)
Ответ отправил: Aster Aster Aster (статус: 1-ый класс)
Ответ отправлен: 21.02.2007, 18:31


Вопрос № 76.730
Здравствуйте уважаемые!
В таблице MySQL строки хранятся в кодировке KOI8-R. Необходимо выводить их в кодировке CP866. Конвертирую:
convert_cyr_string($line["name"], "k", "a");
или
convert_cyr_string($line["name"], "k", "d");
однако на выходе получаю только знаки вопроса, такие же, как если функцию convert_cyr_string() вообще не использую.
Подскажите, как правильно конвертировать строки из одной кодировки в другую?
Отправлен: 21.02.2007, 11:31
Вопрос задал: sir henry (статус: Академик)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 9)

Отвечает: PVS
Здравствуйте, sir henry!
попробуйте использовать функцию iconv("KOI8-R","CP866",$src_str)
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 21.02.2007, 11:38
Оценка за ответ: 5
Комментарий оценки:
Загляните в мини-форум.

Отвечает: Zolton007
Привет, sir henry!
Это у тя мускул четвертый? =)

Я вот после коннекта с БД сразу делаю вот такие запросы:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");

В случае кои8 там будет, наверно (т.к. мускула ща под рукой нет), типа того:
mysql_query ("set character_set_client='koi8r'");
mysql_query ("set character_set_results='koi8r'");
mysql_query ("set collation_connection='koi8r_general_ci'");

Это трабл мускула четвертого. =)

---------
Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 3-ий класс)
Ответ отправлен: 21.02.2007, 19:32
Оценка за ответ: 5
Комментарий оценки:
Да, именно четвертый.
Большое спасибо, сейчас попробую.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.45 beta от 20.02.2007
Яндекс Rambler's Top100

В избранное