<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
include_once('m/model.php');
include_once('c/C_Base.php');
include_once('m/startup.php');
//
// Конттроллер страницы вывода всех вопросов.
//
class C_Questions extends C_Base
{
private $text; // текст
//
// Конструктор.
//
function __construct()
{
parent::__construct();
$this->needlogin = true;
}
//
// Виртуальный обработчик запроса.
//
protected function OnInput()
{
parent::OnInput();
$this->title = $this->title . ' :: Questions';
$Model = Model::Instance();
//получение всех вопросов без ответов
$get_not_answerd = $Model->get_not_answerd();
$this->text = array();
// Вывод всех вопрсов с ответом, по времени
foreach ($get_not_answerd as $key => $value)
{
if($value['time_answer'] != null)
{
$time = $Model->time($value['time_answer']);
$value['time'] = $time;
$this->text[$key] = $value;
}
else
{
$time = $Model->time($value['time_question']);
$value['time'] = $time;
$this->text[$key] = $value;
}
}
$arr = array();
foreach($this->text as $value)
{
++$i;
$arr[$i][$value['id_login']] = $value['id'];
}
//
// Проверка отправка формы ответа
//
foreach ($arr as $array)
{
foreach($array as $key => $arr1)
{
// Добавление ответаe
if(isset($_POST[$arr1]))
{
$Model->add_answer($_SESSION['id_user'], $arr1, $_POST['answer'],
date('Y-m-d H:i:s'));
if($key != null)
{
// Создание connection
$Model->make_connect($_SESSION['id_user'], $key);
$mUser = M_Users::Instance();
// Данные для отправки уведомления
$user = $mUser->GetById($key);
$who = $mUser->GetById($_SESSION['id_user']);
// Отправка уведомления об ответе
$Model->send_email($user['login'], 'answer', $user['email'],
$user['recive_email'], $empty, $who['login']);
}
header('Location: /account/questions');
die();
}
// Удаление вопроса
if(($_GET['a']) == 'delete')
{
$Model->delete_question($_GET['id']);
header('Location: /account/questions');
}
}
}
}
//
// Виртуальный генератор HTML.
//
protected function OnOutput()
{
$vars = array('text' => $this->text, 'user' => $this->user);
$this->content = $this->Template('v/v_questions.php', $vars);
parent::OnOutput();
}
}
View:
<? if(empty($text)): ?>
<strong>Tell your friends you want more questions on Formspring!</strong><br /><br />
<textarea cols="60" >
Ask me anything http://test2.ru/<?=$user['login']?></textarea>
<!-- END MAIN -->
<? else: ?>
<? foreach($text as $key => $value): ?>
<? if(($value['parent_id'] == null) && ($value['answer'] != null)): ?>
<div class="post-snippet">
<strong><?=$value['question']?></strong><br/><br/><?=$value['answer'] ?><br/>
<font size="1" face="Arial">You responded
<? if($value['login'] != null): ?>
to <a href="/<?=$value['login'] ?>"><?=$value['login']?></a>
<? endif ?>
<?=$value['time']?></font><br/>
<? $text1 = array_reverse($text) ?>
<? foreach($text1 as $key1 => $value1): ?>
<? if(($value['id'] == $value1['parent_id']) && ($value1['answer'] != null)): ?><br/>
<strong><?=$value1['question']?></strong>
<br /><br />
<?=$value1['answer']?>
<br />
<font size="1" face="Arial">You responded
<? if($value1['login'] != null): ?>
to <a href="/<?=$value1['login'] ?>"><?=$value1['login']?></a>
<? endif ?>
<?=$value1['time']?><br/>
</font> <? endif ?>
<? endforeach ?> ----------------------
<? foreach($text1 as $key2 => $value2): ?>
<? if(($value['id'] == $value2['parent_id']) && ($value2['answer'] == null)): ?>
<br/>
<strong><?=$value2['question']?></strong>
<br /><br />
<font size="1" face="Arial">
<? if($value2['login'] != null): ?>
<a href="/<?=$value2['login'] ?>"><?=$value2['login']?></a>
<? else: ?>
Someone
<? endif ?>ask you
<?=$value2['time']?></font>
<form method="post">
<textarea cols="70" name="answer"></textarea>
<input type="submit" name = "<?=$value2['id'] ?>" value="Post Response" />
</form>
<a href="/account.php?c=questions&a=delete&id=
<?=$value2['id']?>" >Delete</a>
<? endif ?>
<? endforeach ?>
</div>
<? elseif(($value['parent_id'] == null) && ($value['answer'] == null)): ?>
<div class="post-snippet">
<strong><?=$value['question']?></strong><br/>
<font size="1" face="Arial">
<? if($value['login'] != null): ?>
<a href="/<?=$value['login'] ?>"><?=$value['login']?></a>
<? else: ?>
Someone
<? endif ?>ask you
<?=$value['time']?></font>
<form method="post">
<textarea cols="70" name="answer"></textarea>
<input type="submit" name = "<?=$value['id'] ?>" value="Post Response" />
</form>
<a href="/account.php?c=questions&a=delete&id=<?=$value['id']?>" >
Delete</a>
</div>
<? endif ?>
<? endforeach ?>
<? endif?>
</div>
Скрин выполнения скрипта:
http://i55.tinypic.com/2czwtpe.jpg
Вообщем логика такая я каждой кнопке присваиваю число-идентификатор вопроса, делаю это я для того чтобы мой контроллер узнал какая именно кнопка была нажата во view( последний foreach в контроллере), а удаляю по ссылке delete методом GET, куда передается id вопроса, но сейчас вот только понял, что какой-нибудь хукер, может одним скриптом удалить всем мой записи в базе данных на раз, поэтому прошу у вас помощи, как мне дать знать контроллеру что я хочу удалить именно этот вопрос, или хочу ответить именно на этот вопрос.
P.S. только пришло в голову как обезопасить от удаления вопросов, 1)проверять на наличие сессии и проверять относиться ли этот вопрос к этому пользователю
2)Удалять только те вопросы у которых поле answer null.
P.S.S не смотрите на дизайн и html, пока дизайнер и верстальщик не работал.
Спустя 12 минут, 14 секунд (13.05.2011 - 18:59) inpost написал(а):
<?php - пиши полный, а не сокращенный.
Хотя что делает данный класс?
Хотя что делает данный класс?
Спустя 5 минут, 17 секунд (13.05.2011 - 19:04) ola_sh написал(а):
Данный класс выводит все вопросы без ответа для авторизованного пользователя, если вы зарегистрированы на formsrping.me, спрашивай.ру вы должны знать.
Спустя 3 часа, 28 минут, 14 секунд (13.05.2011 - 22:32) ola_sh написал(а):
Ну что никто знает как улучшить скрипт?
Спустя 12 часов, 17 минут, 54 секунды (14.05.2011 - 10:50) ola_sh написал(а):
ап
_____________
С Уважением ola_sh