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

  Все выпуски  

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


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

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

Выпуск № 307
от 09.04.2006, 09:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 252, Экспертов: 29
В номере:Вопросов: 6, Ответов: 13


Вопрос № 39259: Здравствуйте, эксперты! Возникла такая задача: На одной страничке есть форма. Данные с нее (с эдитов и радиобаттонов) передаются методом post на вторую страничку. На второй страничке эти данные записываются в БД MySQL. Имена переменных Var1, ...
Вопрос № 39285: Всем привет! У меня такой вопрос: "Как создать код защиты от накруток для системы голосования (язык PHP) на сайте?" Я уже долго пытаюсь его реализовать, но никак не получается. Пожалуйста приведите пример такой системы, желатель...
Вопрос № 39294: Здравствуйте уважаемые эксперты. Меня интересует вот что: каким образом можно задать переменные, чтобы их мог использовать любой php скрипт? тоесть: переменные какимто образом задаются открывается любая страница где есть их исполь...
Вопрос № 39305: Здравствуйте Эксперты. Есть ли отдельная функция для подсчета количества одинаковых (заданых) символов в строке? Или как можно определить сколько символов "@" в строке "Здравствуйте@уважаемые@эксперты@в@области@php" За...
Вопрос № 39317: У меня такая проблема: На одном бесплатном хостинге функция GregorianToJD не работает. Как можно другим способом посчитать кол-во дней между датами??...
Вопрос № 39319: Возникла следущая проблема: Есть сайт - состоит из 4 частей(шапка, левая - кнопки, центр(текст), правая(реклама)), так вот, есть рекламодатель, который хочет, чтобы его реклама была ТОЛЬКО на главной странице, а у меня они не меняются, т.е. при п...

Вопрос № 39.259
Здравствуйте, эксперты!
Возникла такая задача:
На одной страничке есть форма. Данные с нее (с эдитов и радиобаттонов) передаются методом post на вторую страничку. На второй страничке эти данные записываются в БД MySQL. Имена переменных Var1, Var2 .. VarN
Проблема: заранее точно не известно, сколько будет этих переменных. Как организовать цикл, чтобы их всех записать в БД?
Заранее спасибо.
Отправлен: 03.04.2006, 10:21
Вопрос задал: Perez (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Straight
Здравствуйте, Perez!
Ищие все переменные в массиве $_POST

Приложение:

Ответ отправил: Straight (статус: Студент)
Ответ отправлен: 03.04.2006, 11:09

Отвечает: Zysoftik
Здравствуйте, Perez!

Насколько я понял, форма строится скриптом. Соответственно, Вы знаете максимальное количество возможных переменных. Через POST передаются все переменные формы. Я бы посоветовал так:

- в форму ввести поле <input type=hidden name=varcount value=N>, где N - число полей формы.

- при приеме формы сделать цикл
for ($i=1;$i<=$_POST['varcount'];$i++)
if (trim($_POST['Var'.$i])!="") //Добавление в БД
Ответ отправил: Zysoftik (статус: 3-ий класс)
Ответ отправлен: 03.04.2006, 11:27


Вопрос № 39.285
Всем привет!
У меня такой вопрос: "Как создать код защиты от накруток для системы голосования (язык PHP) на сайте?"
Я уже долго пытаюсь его реализовать, но никак не получается.
Пожалуйста приведите пример такой системы, желательно с подробными комментариями.

Заранее благодарен всем ответившим.
Код системы голосования (если нужно) в приложении. Желательно оптимизировать систему защиты от накруток под этот код.

Приложение:

Отправлен: 03.04.2006, 18:07
Вопрос задал: Демьянчук Виталий (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Stamm
Здравствуйте, Демьянчук Виталий!
Можно сделать защиту несколькими способами:
1. Писать в куки - отпадает, т.к. пользователь может отключить куки
2. Писать в $_SESSION - тоже отпадает, т.к. можно закрыть окно и открыть опять, а переменные в $_SESSION пропадут
3. Сохранять IP-адрес в базу - я пользуюсь этим методом
Файл с вопросами должен быть такого вида(без тире):
------------
Вопрос
Ответ1~0
Ответ2~0
Ответ3~0
----------
Смотри код в приложении. Если чего не понятно пиши stamm@mail.ru

Приложение:

---------
В день - один, ну два подвига, не больше...

Ответ отправил: Stamm (статус: Студент)
Ответ отправлен: 03.04.2006, 22:18


Вопрос № 39.294
Здравствуйте уважаемые эксперты.
Меня интересует вот что:
каким образом можно задать переменные, чтобы их мог использовать любой php скрипт?
тоесть:
переменные какимто образом задаются
открывается любая страница где есть их использование. значение для них уже заданы заблаговременно.
Заранее спасибо!
Отправлен: 03.04.2006, 20:00
Вопрос задал: Redcap (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Redcap!
Если вы хотите использовать переменные для текущего сеанса пользователя, то можно использовать функции putenv() и getenv(), с помощью которые осуществляется доступ к глобальным переменным. Туда можно записать любое значение. Для функции putenv() параметром служит строка вида "переменная=значение", для getenv() - только название переменной. Эти переменные будут действовать лишь для конкретного пользователя. Чтобы использовать переменные для нескольких скриптов, можно поступить следующим образом.
- Создать скрипт vars.php:
<?php
$var1 = "abc";
$var2 = "1";
$var3 = true;
...
?>

А в каждом из скриптов, где используются данные переменные, в самом начале написать:
include("vars.php");
В этом случае первый скрипт вставиться во второй и переменные можно свободно использовать.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 03.04.2006, 21:19

Отвечает: Zysoftik
Здравствуйте, Redcap!

Можно использовать глобальный массив:

$GLOBALS['varname']=varvalue;
и обращаться к нему, как
$somevariable=$GLOBALS['varname'];

Этот массив является глобальным по определению и доступен во всех местах кода, включая ф-ции, в отличие от предложенного Ерёминым Андреем метода, хотя Вам выбирать, как удобней.
Ответ отправил: Zysoftik (статус: 3-ий класс)
Ответ отправлен: 03.04.2006, 21:48


Вопрос № 39.305
Здравствуйте Эксперты.
Есть ли отдельная функция для подсчета количества одинаковых (заданых) символов в строке?
Или как можно определить сколько символов "@" в строке "Здравствуйте@уважаемые@эксперты@в@области@php"
Заранее благодарю
Отправлен: 03.04.2006, 22:08
Вопрос задал: Redcap (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Doctor013
Здравствуйте, Redcap!
substr_count(строка, подстрока) - возвращает количество вхождений подстроки в строку и еще count_chars(строка, 1 - возвращает массив, где индекс - ASCII код символа, а значение - количество вхождений. Соответственно, второй вариант возвращает информацию по всем символам.

---------
Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.
Ответ отправил: Doctor013 (статус: Студент)
Ответ отправлен: 03.04.2006, 22:21

Отвечает: Ерёмин Андрей
Здравствуйте, Redcap!
Конкретной такой функции не знаю, но можно проще поступить:
$str = "Здравствуйте@уважаемые@эксперты@в@области@php";
$len_1 = strlen($str);
$str = str_replace($str,"@",""); // Удалить все "собаки"
$len_2 = strlen($str);
$count = $len_1 - $len_2;

Т.е. сравниваются длины строки оригинальной и без данного символа, в $count получается количество вхождений смивола в строку.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 03.04.2006, 22:31

Отвечает: Константин
Отдельной функции нет, можно через
while ($ind = strchr('@', $string))
{
$num++;
$string = substr($string, $ind+1);
}
После этого в $num будет твое количество символов.
Ответ отправил: Константин (статус: 2-ой класс)
Ответ отправлен: 05.04.2006, 22:06


Вопрос № 39.317
У меня такая проблема:
На одном бесплатном хостинге функция GregorianToJD не работает. Как можно другим способом посчитать кол-во дней между датами??
Отправлен: 03.04.2006, 23:45
Вопрос задал: Stamm (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: gp
Здравствуйте, Stamm!
Ну, можно, например взять разницу между mktime() от каждой и разделить на (3600*24).
Ответ отправил: gp (статус: Академик)
Украина, Симферополь
WWW: Федерация Крымского Армспорта
----
Ответ отправлен: 04.04.2006, 00:56


Вопрос № 39.319
Возникла следущая проблема:
Есть сайт - состоит из 4 частей(шапка, левая - кнопки, центр(текст), правая(реклама)), так вот, есть рекламодатель, который хочет, чтобы его реклама была ТОЛЬКО на главной странице, а у меня они не меняются, т.е. при переходе скажем в раздел "Новости" перегружается только центральная часть(с текстом). Подскажите - как можно сделать так, чтобы реклама этого заказчика была видна только на главной странице. Очень прошу помочь, буду благодарен за сопровождение объяснения кодом.
Заранее благодарен всем ответившим.
Отправлен: 04.04.2006, 00:00
Вопрос задал: Наумов Роман (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Stamm
Здравствуйте, Наумов Роман!
Очень просто, надо просто проверить имя страницы:
if ($_SERVER['PHP_SELF']=='/index.php'){
//Код показа рекламы
}
---------
В день - один, ну два подвига, не больше...
Ответ отправил: Stamm (статус: Студент)
Ответ отправлен: 04.04.2006, 00:07

Отвечает: XMF
Здравствуйте, Наумов Роман!
--
Покопай в сторону JavaScript
Ответ отправил: XMF (статус: 5-ый класс)
Ответ отправлен: 04.04.2006, 00:12

Отвечает: gp
Здравствуйте, Наумов Роман!
Использовать PHP для решения этой проблемы более элегантно (если PHP вообще поддерживается хостингом), но есть и недостаток - шапка при выполнении условия будет создаваться заново и перегружаться. А для JS, раз уж XMF поленился ответить до конца, можно использовать, например, такой код (вставляется в функцию, находится (подгружается) в центральном фрейме и вызывается, например, по событию Onload тега Body.

parent.frames["topFrame"].document.getElementById("Logo").style.visibility=
(this_location.indexOf("page123") == -1) ? "hidden" : "visible";

Здесь подразумевается, что центральная часть первой страницы содержит в своем названии "page123", верхний фрейм в структуре фреймов имеет имя "topFrame", блок рекламы заключен в контейнер (div) с id="Logo". Плюсы данного подхода - верхний фрейм не перегружается, ненужный элемент скрывается и появляется. По аналогии можно добавить другой контейнер, который будет появляться вместо первого с другой рекламой или т.п. Ну, минусов тоже хватает:)
Ответ отправил: gp (статус: Академик)
Украина, Симферополь
WWW: Федерация Крымского Армспорта
----
Ответ отправлен: 04.04.2006, 01:26

Отвечает: Константин
В шапке, которую вставляешь сделай проверку на $_SERVER['PHP_SELF'];
stristr('index', $_SERVER['PHP_SELF']);
Ответ отправил: Константин (статус: 2-ой класс)
Ответ отправлен: 05.04.2006, 21:58


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

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

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

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

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


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


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

В избранное