Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в файл 
:(
    Опции темы
Ripper
Дата 13.7.2004, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: 1
Всего: 23



Хочу сделать что-то типа голосования. Есть файл имеющий тип:
Ответ1:wow.gif
Ответ2:wow.gif
Ответ3:wow.gif(кол-во ответивших так)
Есть форма:
Код

<form action="vote.php" method="GET">
<b>ВопросиК(например Оцените дизайн сайта)<br>
<input type=hidden name=id value=1>
Хорошо: <input type="radio" name="ans" value="0"><br>
Средне: <input type="radio" name="ans" value="1"><br>
Плохо:  <input type="radio" name="ans" value="2"><br>
<input type="submit" name="submit" value="Vote">
</form>

И есть скрипт который должен просто записать то что выбрал:
Код

<?
include("config.php"); //Тама настройки типа $base_dir="votes"
if (isset($_REQUEST["id"])) //ID голосования
{
 chdir($base_dir); //перехдим в папку
 $file=file($id.".dat"); //1.dat в массив
 $f=fopen($id.".dat", "w+"); //перезаписываю 1.dat
 for ($i=0; $i<count($file); $i++) //3 раза проходит?
 {
  list($q,$a) = explode("::", $file[$i]);  //разбиваю вопрос и ответ
  if ($ans==$i) { $a=$a+1;} //$a++ вообще вроде не работало ну это роли не играет.
  fputs($f,$q."::".$a."\r\n");//а почему он тут не правильно записывает?
 }
fclose($f);
}
?>

Я долго мучался незнаю может просто туплю.. мало спал сегодня =) Если в массив идут строки \r\n\ то почему он записывает без перехода если я не указываю их сам?
А если указываю получается пробелы и другой бред. Если выбрал 1 вариант
Хорошо::1
Норма:wow.gif
--а тут пустая строка появляется--
Плохо:wow.gif
А если выбераю последнее или среднее я непомню то тама вообще что то типа
Хорошо::1
-пустая
Норма:wow.gif
-пустая
Плохо
:wow.gif

Простите если че нить глупое допустил но ни кто не может дать готовую номальную функцию для голосования?? Или скажите где ошибка.... sad.gif hmmm.gif






--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Гость_Frikazoid
Дата 14.7.2004, 20:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Слухай! вопервых нах проходить 3 раза?
для разбиения на массив используй регекспы!
preg_match_all('/<div class="text">(.*)<\/div>/Uims', $f, $text);
вовторых нафига тебе текстовой файл? пользуй мускул! быстрее и круче! 2 запроса и всё в порядке!

  Вверх
Secandr
Дата 15.7.2004, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



проще исеть такую структуру файла:
Цитата
11:22:15

Соответствено ответ1:11, ответ2:22,ответ3:15
читаешь весь файл в переменную, затем разрезаешь строку $mas=explode(':',$file_content) затем $mas[$nomer_otveta]++; затем склеиваешь $file_content=join(":",$mas) и пишешь обратно в файл


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
dm9
Дата 15.7.2004, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Ripper, а теперь подумай, что будет с твоим траффиком, если я сделаю так:

HTML
<form action="vote.php" method="GET">
<b>ВопросиК(например Оцените дизайн сайта)<br>
<input type=hidden name=id value="http://mysite.com/video700megabytes">
Хорошо: <input type="radio" name="ans" value="0"><br>
Средне: <input type="radio" name="ans" value="1"><br>
Плохо: <input type="radio" name="ans" value="2"><br>
<input type="submit" name="submit" value="Vote">
</form>


Кажется, будет не очень хорошо smile.gif
PM MAIL ICQ   Вверх
Ripper
Дата 16.7.2004, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: 1
Всего: 23



dm9 Ты это к тому что можно вставить скрипт любой допустим? Ну в обрабатывабщем скрипте можно проверить если ID есть то если есть файл $id.".dat" то работать дальше?

Secandr
Спасибо попробую


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Secandr
Дата 16.7.2004, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Ripper Передовать имя файла из формы - секуритибаг. Так делать нельзя.

Если уж сильно хочется, то делай проверку:
Код
$id+=0; // теперь $id точно число.
if (($id<1)and($id>999)){echo"Ну ты и сволочь! взломать меня захотел!!!!!";exit;}



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Ripper
Дата 17.7.2004, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: 1
Всего: 23



Secandr насчет файла... а как я выведу вопрос? Я знаю только их номера ведь?
И насчет Id непойму. у меня есть куча файлов. 1.dat ,2.dat ,3.dat, и вывожу все в зависимости от айди... разве нельзя проверить есть ли такой файл у меня в папке ?


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Secandr
Дата 17.7.2004, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Ripper
ты будешь делать проверку на существование, а я в поле id введу вместо цифры другую информацию,например имя одного из твоих скриптов, а в конце пробел, и затрёшь ты свой файл. Мелкое но западло!

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

$id.",dat" - не защита от взломщика, а защита от сбоя и дурака.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
dm9
Дата 17.7.2004, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Цитата
dm9 Ты это к тому что можно вставить скрипт любой допустим? Ну в обрабатывабщем скрипте можно проверить если ID есть то если есть файл $id.".dat" то работать дальше?


Secandr многое сказал, но добавлю ещё.

Просто file() работает так, что если ты передашь ему url, он его будет пытаться скачать. В этом сучае:
1. Ты тратишь много траффика.
2. Процесс php занимает до фига памяти и очень сильно грузит систему (сам проверял, на Apache под Windows).

Это отключается в настройках php, но по умолчанию, насколько я знаю, включено... Почитай статьи по безопсности. Я давал пару интересных ссылок в соседнем топике.

PS Как раз большие файлы c расширением dat в инете найти несложно, вот можно и устроить западло. Конечно, этот баг ещё надо будет найти, ведь php-код не выдаётся сервером, но всё равно такие дыры не есть гуд.
PM MAIL ICQ   Вверх
Ripper
Дата 18.7.2004, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: 1
Всего: 23



Ну а как мне вопрос вывести? (secandr) И потом все равно не догоняю... я же могу проверить чтобы айди тока из цифр состояло. Или например если запрос не с формы то остоновить действия? И вообще как лучше делать голосование т.е. строктура файлов... чтобы можно было делать их много и вставлять в любое место сайта... как я определю какое голосование я вставил? тока через hidden?? hmmm.gif


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Secandr
Дата 18.7.2004, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Я и говорю, что нужно проверять чтобы id состояло только из цифр. $id+=0; - точно переведёт id в числовой вид, а затем ифом проверяешь не фыходит ли id за рамки <1 и >9999


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
IZ@TOP
Дата 21.7.2004, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



А еще лучше установить точный путь до базы. И читать так: file('basedir/'.intval($id).'.dat');, максимум защиты, минимум кода. Единственное что тебе светит, это ошибка интерпретатора что файл не существует.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.