По этому...
И так к сути поближе. Есть две кнопочки (картинки). Вот их форма
<form method="post" action="" id="like_unlike">
<input type="submit" class="like" name="like" value="1" title="поставить автору +">
<input type="submit" class="unlike" name="unlike" value=" " title="поставить автору -">
</form>
В таблице с заметками, добавил еще 2 поля - like и unlike. При нажатии на одну из кнопок, в табл. записывается +1. Вот собственно, так...
Сама проблема - в обработчике. Сам обработчик заносит данные после нажатия на одну из кнопок, но после этого, если нажать F5, то это же значение, опять заносится... В этом и есть проблема.
Почитал про cookie поподробнее... Вроде на нем можно как-то реализовать... Но как еще опыта не хватает... Поэтому, если кто может, прошу ответить, буду благодарен... Спасибо.
Спустя 7 минут, 15 секунд (2.03.2011 - 12:04) Adil написал(а):
При обработке формы
или посылай ее на другой скрипт, делай Like или unlike, а потом возвращай на ту страницу
или же как только обработал форму в скрипте делай редирект на ту же страницу.
При таком варианте при нажатии F5 ничего не будет.
На счет того, чтобы много раз не могли нажать like, то здесь cookie+ip
или посылай ее на другой скрипт, делай Like или unlike, а потом возвращай на ту страницу
или же как только обработал форму в скрипте делай редирект на ту же страницу.
При таком варианте при нажатии F5 ничего не будет.
На счет того, чтобы много раз не могли нажать like, то здесь cookie+ip
Спустя 4 минуты, 45 секунд (2.03.2011 - 12:09) m4a1fox написал(а):
Adil
Цитата |
На счет того, чтобы много раз не могли нажать like, то здесь cookie+ip |
А это уже БД надо использовать?
Спустя 1 минута, 57 секунд (2.03.2011 - 12:11) m4a1fox написал(а):
Adil
Наверно лучше еще один файл использовать?
Наверно лучше еще один файл использовать?
Спустя 2 минуты, 6 секунд (2.03.2011 - 12:13) Adil написал(а):
в базу данных записываете ip, а в куки какой-нибудь флаг типо проголосовал
Спустя 3 минуты, 4 секунды (2.03.2011 - 12:16) Adil написал(а):
Цитата (m4a1fox @ 2.03.2011 - 12:11) |
Наверно лучше еще один файл использовать? |
Нет в принципе. В том же файле можно сделать так:
<?
if($_POST['like'] == 1){
$count++; // ну тут делаете операции с бд
header('Location: эта же страница');
}
?>
хотя может быть тогда ошибка, если что-то уже выведена в браузер.
Тогда легче сделайте отдельный скрипт.
Спустя 53 минуты, 33 секунды (2.03.2011 - 13:09) m4a1fox написал(а):
Adil
Знаете, не хотелось бы БД использовать... Эта штука не такая строгая... Так что думаю куков должно мне хватить.
Знаете, не хотелось бы БД использовать... Эта штука не такая строгая... Так что думаю куков должно мне хватить.
Спустя 37 минут, 4 секунды (2.03.2011 - 13:46) m4a1fox написал(а):
А если вот такой запрос
if(isset($_POST['like'])){
// ну тут делаете операции с бд
mysql_query ("UPDATE `you_mail` SET `like` = `like` + 1 WHERE `id` = {$view}");
}
Спустя 5 минут, 18 секунд (2.03.2011 - 13:52) m4a1fox написал(а):
Люди добрые, отзовитесь.....
Спустя 29 минут, 11 секунд (2.03.2011 - 14:21) m4a1fox написал(а):
Я уже реально близко... Прошу подсказки в этом коде не работает $_SESSION
Помогите исправить!
if(isset($_POST['like'])).
{
$i = '1';
if(!isset($_SESSION['like'])){
mysql_query( "UPDATE `you_mail` SET `like` = `like` + '".$i."' WHERE `id` =".$id_like_unlike);
$_SESSION['like'] = $like;
echo "
<html><head>
<meta http-equiv='Refresh' content='0; URL=page_view_you_mail.php?view=$id_like_unlike'>
</head></html>
";
Помогите исправить!
Спустя 37 минут, 16 секунд (2.03.2011 - 14:58) m4a1fox написал(а):
Все таки cookie нужны... Без них - никак!
Спустя 1 минута, 55 секунд (2.03.2011 - 15:00) fallow написал(а):
m4a1fox
Запусти сессию
session_start(); В самом начале скрипта.
А с куками то что не получается?
Запусти сессию
session_start(); В самом начале скрипта.
А с куками то что не получается?
Спустя 2 минуты, 4 секунды (2.03.2011 - 15:02) m4a1fox написал(а):
fallow
Сделал.... Я думаю тут не дело в SESSION. Потому что это другой файл на который ссылается форма... Вот....
Сделал.... Я думаю тут не дело в SESSION. Потому что это другой файл на который ссылается форма... Вот....
Спустя 5 минут, 31 секунда (2.03.2011 - 15:08) m4a1fox написал(а):
fallow
Смотрите, это типа "нравится" не "не нравится". то есть пользователь нажимает кнопку, нравится, идет переход на другую страницу, где заносится его голос в виде +1 в строку с заметкой. И обратно скрипт переводит юзера на страницу с постом. Но как сделать, что бы он не смог еще раз нажать кнопки "нравится" или "не нравится" ?
Смотрите, это типа "нравится" не "не нравится". то есть пользователь нажимает кнопку, нравится, идет переход на другую страницу, где заносится его голос в виде +1 в строку с заметкой. И обратно скрипт переводит юзера на страницу с постом. Но как сделать, что бы он не смог еще раз нажать кнопки "нравится" или "не нравится" ?
Спустя 5 минут, 10 секунд (2.03.2011 - 15:13) fallow написал(а):
поставить куки на день
Потом проверку :
И смогут они проголосовать только через день.
Т.к куки удаляться через 24 часа)
setcookie('name', 'vasya' , time()+ 3600*24);
Потом проверку :
if(empty($_COOKIE['reputation']))
{
if(!empty($_POST['plus']))
{
$_COOKIE['reputation'] = $_SERVER['REMOTE_ADDR'];
//тут с базу заносишь +1
}
elseif(!empty($_POST['minus']))
{
$_COOKIE['reputation'] = $_SERVER['REMOTE_ADDR'];
//тут в бд заносишь -1
}
}
else
{
echo 'Э? Куда, ты уже голосовал xD';
}
И смогут они проголосовать только через день.
Т.к куки удаляться через 24 часа)
Спустя 6 минут, 39 секунд (2.03.2011 - 15:20) m4a1fox написал(а):
fallow
Не получается.... все равно заносится....(
Не получается.... все равно заносится....(
Спустя 54 секунды (2.03.2011 - 15:20) m4a1fox написал(а):
setcookie('name', 'vasya' , time()+ 3600*24);это вверх страницы.
Это запрос -
<?php
if(empty($_COOKIE['reputation']))
{
if(!empty($_POST['like']))
{
$_COOKIE['reputation'] = $_SERVER['HTTP_X_REAL_IP'];
mysql_query("UPDATE `you_mail` SET `like` = `like` + 1 WHERE `id` =".$id_like_unlike);
echo $back;
}
elseif(!empty($_POST['unlike']))
{
$_COOKIE['reputation'] = $_SERVER['HTTP_X_REAL_IP'];
mysql_query("UPDATE `you_mail` SET `unlike` = `unlike` + 1 WHERE `id` =".$id_like_unlike);
}
}
?>
Спустя 1 минута, 57 секунд (2.03.2011 - 15:22) fallow написал(а):
Там $_SERVER['HTTP_X_REAL_IP']; поправь на $_SERVER['REMOTE_ADDR']
Извини, не досмотрел)
Извини, не досмотрел)
Спустя 1 минута, 18 секунд (2.03.2011 - 15:24) m4a1fox написал(а):
fallow
) поправил, увидел просто.... но не помогло
) поправил, увидел просто.... но не помогло

Спустя 1 минута, 31 секунда (2.03.2011 - 15:25) fallow написал(а):
Страницу обновляй-ка) Заносится?
Спустя 2 минуты, 34 секунды (2.03.2011 - 15:28) m4a1fox написал(а):
fallow
Так.... Что бы вы понимали. Форма ссылается на страницу куда я поставил ваш код. И да, если нажимать f5 то значения заносятся
Так.... Что бы вы понимали. Форма ссылается на страницу куда я поставил ваш код. И да, если нажимать f5 то значения заносятся

Спустя 30 минут, 29 секунд (2.03.2011 - 15:58) DedMorozzz написал(а):
Зачем куки для защиты от Ф5. Делаешь или редирект, иль как подсказали уже на другой скрипт аяксом отсылаешь.
Спустя 19 минут, 35 секунд (2.03.2011 - 16:18) m4a1fox написал(а):
DedMorozzz
Тут защита в принципе не от F5, а о том, что когда получился редирект, юзер который уже нажимал на кнопку, не смог заново это сделать.
Тут защита в принципе не от F5, а о том, что когда получился редирект, юзер который уже нажимал на кнопку, не смог заново это сделать.
Спустя 5 минут, 59 секунд (2.03.2011 - 16:24) m4a1fox написал(а):
нет идей ни у кого?
Спустя 29 минут, 52 секунды (2.03.2011 - 16:54) m4a1fox написал(а):
Видимо.... нет.....
Спустя 1 час, 20 минут, 54 секунды (2.03.2011 - 18:15) fallow написал(а):
one.php
two.php
<?php
$minus = !empty($_POST['minus'])? $_POST['minus'] : null;
$plus = !empty($_POST['plus'])? $_POST['plus'] : null;
if(empty($_COOKIE['reputation']))
{
if(!empty($plus))
{
//ставим куки на 10 секунд. Чтобы проверить эффект.
//после 10 секунд скрипт разрешит добавлять сообщения
//p.s на час time()+3600 , на день time()+3600*24
setcookie('reputation' ,'plus', time()+10);
$minus = null;
header("location: two.php");
}
if(!empty($minus))
{
//по аналоу плюса.
setcookie('reputation' , 'minus', time()+10);
$plus = null;
header("location: two.php");
}
echo 'Голосовать можно..';
}
else
{
echo 'Вы уже сегодня голосовали...';
}
?>
<form action="" method="POST">
<input type="submit" name="plus" value=" +1" />
<input type="submit" name="minus" value=" -1" />
</form>
two.php
<?php
//добавление в базу БД
if($_COOKIE['reputation'] == 'plus')
{
//добавляешь плюс в БД
//...
header("location: one.php");
}
if($_COOKIE['reputation'] == 'minus')
{
//добавляешь минус в БД
//....
header("location: one.php");
}
?>
Спустя 1 час, 20 минут, 44 секунды (2.03.2011 - 19:35) m4a1fox написал(а):
fallow
Проверил скрипт... работает... большое вам спасибо.... но (смешно наверно) не могу понять как передать в переменной номер поста в кот. надо заносить +
Проверил скрипт... работает... большое вам спасибо.... но (смешно наверно) не могу понять как передать в переменной номер поста в кот. надо заносить +
Спустя 32 минуты, 29 секунд (2.03.2011 - 20:08) fallow написал(а):
Эм, всмысле номер поста?)
Некую переменную в БД засунуть что-ли?
Ну запросом mysql_query
Некую переменную в БД засунуть что-ли?
Ну запросом mysql_query
Спустя 6 минут, 2 секунды (2.03.2011 - 20:14) m4a1fox написал(а):
fallow
Понимаете, вот мой запрос в БД, только вместо 114 необходимо переправить $ страницы.
Вот здесь она появляется
И вот как ее сюда поставить, ума не преложу -
Понимаете, вот мой запрос в БД, только вместо 114 необходимо переправить $ страницы.
Вот здесь она появляется
<input type="submit" name="plus" value=" +1" />
[size=6]<input type="text" name="id_like_unlike" value="<?php echo $view?>">[/size]
<input type="submit" name="minus" value=" -1" />
</form>
И вот как ее сюда поставить, ума не преложу -
$minus = !empty($_POST['minus'])? $_POST['minus'] : null;
$plus = !empty($_POST['plus'])? $_POST['plus'] : null;
$id_like_unlike = !empty($_POST['id_like_unlike'])? $_POST['id_like_unlike'] : null;
if(empty($_COOKIE['reputation']))
{
if(!empty($plus))
{
//ставим куки на 10 секунд. Чтобы проверить эффект.
//после 10 секунд скрипт разрешит добавлять сообщения
//p.s на час time()+3600 , на день time()+3600*24
setcookie('reputation' ,'plus', time()+10);
$minus = null;
header("location: two.php");
}
if(!empty($minus))
{
//по аналоу плюса.
setcookie('reputation' , 'minus', time()+10);
$plus = null;
header("location: two.php");
}
echo 'Голосовать можно..';
}
else
{
echo 'Вы уже сегодня голосовали...';
}
<?php
include './admin/blocks/db.php';
if($_COOKIE['reputation'] == 'plus')
{
mysql_query("UPDATE `you_mail` SET `like` = `like` + 1 WHERE `id` =114");
header("location: page_view_you_mail.php?view=114");
}
if($_COOKIE['reputation'] == 'minus')
{
mysql_query("UPDATE `you_mail` SET `unlike` = `unlike` + 1 WHERE `id` =".$id_like_unlike);
header("location: page_view_you_mail.php?view=114");
}
?>
Спустя 25 минут, 15 секунд (2.03.2011 - 20:39) fallow написал(а):
Можно в сессию сохранить переменную, потом она будет доступна на всех страницах деррикторий в которой вы её сохранили.
Потом в запросе передавать.Когда работаем с сессией обязательно нужно запускать сессию
session_start();
p.s учитите, сессия уничтожится после перезагрузки браузера.
Потом в запросе передавать.Когда работаем с сессией обязательно нужно запускать сессию
session_start();
p.s учитите, сессия уничтожится после перезагрузки браузера.
Спустя 1 минута, 40 секунд (2.03.2011 - 20:41) m4a1fox написал(а):
fallow
Спасибо. Буду учить.
А даже если грубо пример набросать?
Спасибо. Буду учить.
А даже если грубо пример набросать?
Спустя 3 минуты, 33 секунды (2.03.2011 - 20:44) m4a1fox написал(а):
$_SESSION['view'] = $view;
На первой странице $view выводит номер id поста.
Спустя 14 минут, 44 секунды (2.03.2011 - 20:59) fallow написал(а):

Спустя 3 минуты, 44 секунды (2.03.2011 - 21:03) m4a1fox написал(а):
тогда куда вставлять эту строчку?
Спустя 15 минут, 49 секунд (2.03.2011 - 21:19) m4a1fox написал(а):
Вот такая ошибка вылазит
Не знаете в чем дело? Это может быть из-за того что у меня еще до этого session определяется?
Warning: Cannot use a scalar value as an array in Y:\home\crimealeaks.com\www\page_view_you_mail.php on line 23
Не знаете в чем дело? Это может быть из-за того что у меня еще до этого session определяется?
Спустя 5 минут, 16 секунд (2.03.2011 - 21:24) fallow написал(а):
Ну вот те к примеру нужна переменная $view из страницы 1.php , в странице 2.php
в 1.php пишешь
session_start();
$_SESSION['view'] = $view;
А в 2.php принимаешь :
session_start();
$view = $_SESSION['view'];
в 1.php пишешь
session_start();
$_SESSION['view'] = $view;
А в 2.php принимаешь :
session_start();
$view = $_SESSION['view'];
Спустя 1 минута, 14 секунд (2.03.2011 - 21:25) m4a1fox написал(а):
И все же не понятно, куда вставлять сессию, что бы она передавала параметр. Вот сюда
Это можно поставить?!
if(!empty($plus))
{
//ставим куки на 10 секунд. Чтобы проверить эффект.
//после 10 секунд скрипт разрешит добавлять сообщения
//p.s на час time()+3600 , на день time()+3600*24
setcookie('reputation' ,'plus', time()+10);
$minus = null;
header("location: two.php");
}
Это можно поставить?!
Спустя 4 минуты, 17 секунд (2.03.2011 - 21:29) m4a1fox написал(а):
как у вас это получается.... спасибо. я, стоя на остановке, темно.. ))) печатая одной рукой.... еще раз спасибо вам огромнное