[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сколько раз ткнули в ссылку
Gabriel
при клике на линк юзера переводит на страницу где в базу записываються данные ( имя файла путь к нему, ник юзера категорию файла и тд ) и отправляет юзера обратно на страницу с которой он пришел.
и почемуто у меня напроч вылетело из головы последствие нажатия кнопки назад, ведь его переведет на страницу записи и снова данные запишуться в базу.
каким образом можно сделать запись в бд без обновления страницы или как сделать чтобы при нажатии кнопки назад юзер не попадал на страницу записи?
PHP
<?php
session_start
();
include(
"conectall.php");
#$data = date("Y-m-d H:i:s");
if ( isset( $_COOKIE['exist'] ) && $_COOKIE['exist'] == $_GET['idd'] ) {
    echo
"<html><head></head><meta HTTP-EQUIV='Refresh' CONTENT='0; URL=" $_SESSION['link'] . "''></html>";
} else {
    
    
$fiend_user mysql_query("SELECT `id` FROM `usuariosfilerindustrialk` WHERE `usuarios` = '" $_SESSION['s_username'] . "'")
                    or die( 
mysql_error() );
    
$user mysql_fetch_assoc$fiend_user );
    
$user['id'];
    
    
$findfile mysql_query("SELECT * FROM `archivos` WHERE `archivo_id` = '" $_GET['idd'] . "'") or die( mysql_error() );
    
$archivoident mysql_fetch_assoc$findfile );
    
$archivoident['name'];
    
$archivoident['ruta'];
    
$archivoident['apartado_id'];
    
    
$findlocationfile mysql_query("SELECT * FROM `apartados` WHERE `apartado_id` = '" $archivoident['apartado_id'] . "'")
                        or die( 
mysql_error () );
    
$locationfile mysql_fetch_assoc$findlocationfile );
    
$locationfile['cat_id'];
    
$locationfile['subcat_id'];
    
    
$count_vievs mysql_query("SELECT * FROM `estadisticas` WHERE usuarios = '" $_SESSION['s_username'] . "' 
                                and `archivo_id` = '" 
$_GET['idd'] . "'") or die ( "counter" mysql_error() );
    if ( 
mysql_num_rows$count_vievs ) == ) {
        
        
$count_vievs_user mysql_fetch_assoc$count_vievs );
        
$count $count_vievs_user['num_vievs'];
        
$count++;
        
mysql_query("UPDATE `estadisticas` SET `num_vievs` = '" $count++ . "' WHERE usuarios = '" $_SESSION['s_username'] . "'
                    and `archivo_id` = '" 
$_GET['idd'] . "'") or die ( "counter UPDATE" mysql_error() );
    } else {
    
$count 1;
    
mysql_query("INSERT INTO `estadisticas` SET `usuarios` = '" $_SESSION['s_username'] . "',
                `apartado_id` = '" 
$archivoident['apartado_id'] . "', `archivo` = '" $archivoident['name'] . "',
                `ruta` = '" 
$archivoident['ruta'] . "', `archivo_id` = '" $_GET['idd'] . "',
                `cat_id` = '" 
$locationfile['cat_id'] . "', `subcat_id` = '" $locationfile['subcat_id'] . "',
                `user_id` = '" 
$user['id'] . "' , `num_vievs` = '" $count++ ."'")
    or die( 
mysql_error() );
    }
    
setcookie"exist"$_GET['idd'], time() + 3600"/" );
    echo
"<html><head></head><meta HTTP-EQUIV='Refresh' CONTENT='0; URL=".$_SESSION['link']."''></html>";
}

вариант без аякса



Спустя 2 минуты, 6 секунд (30.09.2009 - 17:48) Nikitian написал(а):
Вешайте юзеру куку и проверяйте: если кука есть, то возвращайте его взад ничего никуда не записывая.

Спустя 13 минут, 15 секунд (30.09.2009 - 18:01) Gabriel написал(а):
хм.... тогда прийдеться понапихивать кнупок назад и сколькож куке времени на жизнь выделить?Оо
блин тяжко без аякса жить sad.gif

Спустя 5 дней, 4 часа, 2 минуты, 45 секунд (5.10.2009 - 22:04) Gabriel написал(а):
наверное идиотски вопрос но как прихимичить переменные $_GET к аяксу?

Спустя 15 минут, 31 секунда (5.10.2009 - 22:19) twin написал(а):
Цитата
http://my_site.com/?idd=1';%20DROP%20TABLE%20%60archivos%60;%20--%20

Вот такой запрос попробуй

Спустя 8 минут, 5 секунд (5.10.2009 - 22:28) Gabriel написал(а):
twin
ето был злой намек на покажи код? dry.gif

Спустя 3 часа, 9 минут, 19 секунд (6.10.2009 - 01:37) Gabriel написал(а):
дошел наверное до абсолютного маразма
apartados.php
PHP
while ( $row3 = mysql_fetch_assoc( $archivos ) ) {
                        $idd = $row3['archivo_id'];
                        ?>
                        <div id="ajax"></div>
                        <li><a class="blue_link1" id="txt"<?php echo 'onClick="Pusk(' . intval( $idd ) . ')"'; ?> target="_blank"
                        href="<?php echo $row3['ruta'] ?>"><?php echo $row3['name'] ?  ></a></li><

.js
Код

var req = Create();

function Create(){
   if(navigator.appName == "Microsoft Internet Explorer"){
       req = new ActiveXObject("Microsoft.XMLHTTP");
   }else{
       req = new XMLHttpRequest();
   }
   return req;
}

function Pusk()
{
var txt = encodeURIComponent(document.getElementById('txt').value);
var query = 'txt='+txt;
Request(query)
}

function Request(query,additional_part)
{
req.open('POST', 'static.php?idd='+additional_part, true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);          
}

function Refresh()
{
var a = req.readyState;  
 
if( a == 4 )
{
var b = req.responseText;
document.getElementById('ajax').innerHTML = b;
}
else
{
document.getElementById('ajax').innerHTML = '<img src="prel.gif" />';
}
}

запрос собсно говоря
PHP
<?php
session_start
();
include(
"conectall.php");
if ( isset( $_COOKIE['exist'] ) && $_COOKIE['exist'] == $_GET['idd'] ) {
    echo"<html><head></head><meta HTTP-EQUIV='Refresh' CONTENT='0; URL=" . $_SESSION['link'] . "''></html>";
}
 else {
    
    $fiend_user 
= mysql_query("SELECT `id` FROM `usuariosfilerindustrialk` WHERE `usuarios` = '" . $_SESSION['s_username'] . "'")
                    or die( mysql_error() );
    $user = mysql_fetch_assoc( $fiend_user );
    $user['id'];
    
    $findfile 
= mysql_query("SELECT * FROM `archivos` WHERE `archivo_id` = '" . $_GET['idd'] . "'") or die( mysql_error() );
    $archivoident = mysql_fetch_assoc( $findfile );
    $archivoident['name'];
    $archivoident['ruta'];
    $archivoident['apartado_id'];
    
    $findlocationfile 
= mysql_query("SELECT * FROM `apartados` WHERE `apartado_id` = '" . $archivoident['apartado_id'] . "'")
                        or die( mysql_error () );
    $locationfile = mysql_fetch_assoc( $findlocationfile );
    $locationfile['cat_id'];
    $locationfile['subcat_id'];
    
    $count_vievs 
= mysql_query("SELECT * FROM `estadisticas` WHERE usuarios = '" . $_SESSION['s_username'] . "' 
                                and `archivo_id` = '"
 . $_GET['idd'] . "'") or die ( "counter" . mysql_error() );
    if ( mysql_num_rows( $count_vievs ) == 1 ) {
        
        $count_vievs_user 
= mysql_fetch_assoc( $count_vievs );
        $count = $count_vievs_user['num_vievs'];
        $count++;
        mysql_query("UPDATE `estadisticas` SET `num_vievs` = '" . $count++ . "' WHERE usuarios = '" . $_SESSION['s_username'] . "'
                    and `archivo_id` = '"
 . $_GET['idd'] . "'") or die ( "counter UPDATE" . mysql_error() );
    } else {
    $count = 1;
    mysql_query("INSERT INTO `estadisticas` SET `usuarios` = '" . $_SESSION['s_username'] . "',
                `apartado_id` = '"
 . $archivoident['apartado_id'] . "', `archivo` = '" . $archivoident['name'] . "',
                `ruta` = '"
 . $archivoident['ruta'] . "', `archivo_id` = '" . $_GET['idd'] . "',
                `cat_id` = '"
 . $locationfile['cat_id'] . "', `subcat_id` = '" . $locationfile['subcat_id'] . "',
                `user_id` = '"
 . $user['id'] . "' , `num_vievs` = '" . $count++ ."'")
    or die( mysql_error() );
    }
    #setcookie( "exist", $_GET['idd'], time() + 3600, "/" );
    echo"<html><head></head><meta HTTP-EQUIV='Refresh' CONTENT='0; URL=".$_SESSION['link']."''></html>";
}

видать я совсем неадекватный какойто

Спустя 31 минута, 13 секунд (6.10.2009 - 02:08) SunSet написал(а):
Gabriel
Тебе видимо нужно капать в сторону отключения повтора внесения в базу при Ф5. Твина труси, он точно знает как)) smile.gif
Если я все правильно понял конечно. Суть такова: при нажатии на ссылку, происходит проверка, добавляется в базу, и при редиректе на предыдущуюю страницу присваивается переменная черег гет в виде undex.php?saved. Она нужна для первой проверки, что если существует то в базу ниче не вносится, а если нету то добавляет и перенаправляет на страницу, где присваивает эту переменную saved.

Спустя 8 минут, 54 секунды (6.10.2009 - 02:17) Gabriel написал(а):
SunSet
емм я седня с етим сошел с ума дело в том что нужно записать в базу ид файла имя юзера (оно и так пишется) ну и место где находиться файл кегория субкатегория и заголовок с ф5 вообше никаких особых проблем быть недолжно мне нужно выцепить ид файла через гет а кким макаром чет недодумываюсь се остальное выдергиваеться запросом при наличии ид файла(archivo_id).
ну как видиш твин добрый дядя мне посоветовал не мучать моск дропнуть нафик таблю и валить спать:)
черт почему мне так нравиться чистый php без всяких html и так длее, никак налюбоватсо немогу

Спустя 15 минут, 11 секунд (6.10.2009 - 02:32) SunSet написал(а):
Gabriel
Ну что я могу посоветовать - хрен его знает laugh.gif
Моих знаний для этого не достаточно, так бы помог. Вижу два выхода с этой ситуации:
1. Ждать кто будет знать как помочь.
2. Переделать все нафик, если требуемая фича вовсе необязательна smile.gif

Спустя 11 минут, 50 секунд (6.10.2009 - 02:44) Gabriel написал(а):
SunSet
былабы не обязательна яб ее и неделал а оставлять чисто на пхп както не красиво, не естетично совсем ведь зачем пользователю видеть переход на страничку?smile.gif а все что про аякс не читал все блин формы и формы mad.gif

Спустя 2 минуты, 8 секунд (6.10.2009 - 02:46) SunSet написал(а):
Gabriel
Мой тебе совет - если пока работает, оставь, делай чтото другое и паралельно ищу инфу по этому вопросу. А то лоханешься как я когдато - неделю просидел в поисках, в итоге так надоела та идея, что хотел сделать - что аж передумал biggrin.gif

Спустя 4 минуты, 19 секунд (6.10.2009 - 02:50) Gabriel написал(а):
SunSet
не нетут то было я упертый и мне нехватает всеголиш поймать ГЕТ!!!! (хотя последнее время кажеться что до него недоходит вообше) blink.gif

Спустя 14 минут, 6 секунд (6.10.2009 - 03:05) Gabriel написал(а):
Array ( [idd] => undefined )
за что мне ето mad.gif

Спустя 5 часов, 19 минут, 34 секунды (6.10.2009 - 08:24) twin написал(а):
Цитата
твин добрый дядя мне посоветовал не мучать моск дропнуть нафик таблю и валить спать:)

Это хорошо что я, и хорошо что тебе. А вот потом. если будешь продолжать в том же духе, это сделает не добрый твин, а злой хацкер. Почему дыряво пишешь?

А по теме - есть несколько путей.
1. Проверять сессию
2. Капча
3. Динамические имена селектов
4. Куки, как было предложено. Правда это самый бестолковый способ.
5. Аякс

Ну и еще несколько. Выбирай.

Спустя 1 час, 59 минут, 44 секунды (6.10.2009 - 10:24) Gabriel написал(а):
twin
ето больше не на пишеш а на набрасиваеш похоже ибо все набросано на быструю руку ДЫРЯВО неспорю, а я сказал что плохо? так я вродь как на аяксе остановился куку вродь как никрути нада вешать ато заест адоб как у мну на работе и накрутит себе человек статистику.
а вот как сесия и каптча тут вписываються ейбогу нипониме ну да проверить залогинен юзер или нет ето ясено а каптча Оо яж стараюсь сделать так чтобы юзер невидел что я что я собираю статистику по его кликам или я как всегда чегото непонял?

Спустя 2 часа, 8 минут, 36 секунд (6.10.2009 - 12:32) Gabriel написал(а):
кстать попробовал то что ты писал табля наместе wink.gif
видать плохой из мну хацкер:)

Спустя 5 часов, 23 минуты (6.10.2009 - 17:55) Gabriel написал(а):
не актуально.
спасибо sergeiss нашел похожий топ

Спустя 19 часов, 59 минут, 12 секунд (7.10.2009 - 13:55) Gabriel написал(а):
насколько корректным будет замена ивента с онклика на онблур?
чтобы при клике/правом клике/контрол+клик/ данные добавлялись в базу?

Спустя 13 дней, 9 часов, 35 минут, 58 секунд (20.10.2009 - 23:31) brdm написал(а):
Да ненужно никаких баз. И вообще это называется статистика популярности страниц или ссылок, что тоже самое. Ловишь
PHP
// Запрашиваемый URL
$ReqName "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

а затем пишешь в текстовый файл базу с номером запроса = 0.
Потом далее если следующий URL такой же номер запроса в базе увеличиваешь на 1, если нет доавляешь URL в базу. И так далее. Вот и вся кухня. Базу хроанить можно как угодно по суткам или больше.

Спустя 10 дней, 23 часа, 31 минута, 50 секунд (2.11.2009 - 00:02) Dron19 написал(а):
Если я вас правильно понял, то на вашем месте я бы разделил станицу переменными, когда кнопка назад будет отправлять посетителя назад на ту страницу откуда он пришел, его кинет на ту переменную которую вы указали и в итоге на той же самой странице обновление просмотра не будет происходить, так как условие не будет выполняться!

Спустя 2 часа, 23 минуты, 32 секунды (2.11.2009 - 02:26) Gabriel написал(а):
Dron19
вообшето проблема уже давно решена


_____________
one step, two steps HERE WE GO!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.