2013-07-03 1 views
-1

Мы пишем простой видеопроигрыватель, а часть его функций - отправить простой запрос GET на страницу PHP на веб-сервере, обновить базу данных с помощью клиента активность (т.е. идентификатор видео они смотрят, в каком положении они находятся, и их идентификатор пользователя):PHP по-разному, когда страница не запрашивается у браузера

listener.php?user=1&time=59000&movie_id=35003 

это listener.php очень прост, он проверяет, если уже существует ряд для этще идентификатор пользователя и видеоролик ID:

SELECT orders_products_id, 
    products_date_last_watched as lasttime, 
    now() as now, 
    products_timewatched 
    from orders_products 
    where products_id = '" . $product_id . "' and 
    customers_id = '" . $customer_id ."' 

, за которым следует:

if ($check['orders_products_id'] > 0) 

Если это правда, это будет запустить UPDATE заявление

если ложно, то будет работать оператор INSERT

Теперь проблема, если я загрузить этот listener.php в браузере и изменения значения непосредственно в URL-адресе, он работает так, как ожидалось.

Но, когда одна и та же страница вызывается программой, она всегда заканчивается вставкой новой строки. В журналах сервера указан правильный URL:

"GET /listener.php?user=1&time=128142&movie_id=35003 HTTP/1.1" 200 - "-" "Mozilla/5.0" 

Любые идеи? Это работает на моем тестовом сервере, который является XAMPP на Windows 2008R2, если это имеет значение?

Edit: вот полный код:

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 

include('includes/application_top.php'); 


$user_id = $_GET['user']; 
$lastpos = $_GET['time']; 
$product_id = $_GET['movie_id']; 
$episode = 0; 

//check for existing listing 
$check_query = tep_db_query("SELECT orders_products_id, products_date_last_watched as lasttime, now() as now, products_timewatched from orders_products where products_id = '" . $product_id . "' and customers_id = '" . $customer_id ."' and products_lastepisode = '" . $episode . "'"); 
$check = tep_db_fetch_array($check_query); 

if ($check['orders_products_id'] > 0) { 
//user has already watched this 


//find seconds between last timestamp and now 
$starttime = strtotime($check['lasttime']); 
$endtime = strtotime($check['now']); 
$difference = $endtime - $starttime; 

if ($difference < 60) { 
    $totaltime = $check['products_timewatched'] + $difference; 
} else { 
    $totaltime = $check['products_timewatched']; 
} 

$update_query = "UPDATE orders_products set products_lastposition = '" . $lastpos ."', products_date_last_watched = now(), products_lastepisode = '" . $episode . "', products_timewatched = '" . $totaltime . "', products_platform = '" . $_SERVER['HTTP_USER_AGENT'] . "', customers_ip = '" . $_SERVER['REMOTE_ADDR'] ."' where orders_products_id = '" . $check['orders_products_id'] ."'"; 
tep_db_query($update_query); 

} else { 

//create new entry 
if ($user_id != 999999999){ 
    tep_db_query("INSERT INTO orders_products (products_date_first_watched, products_visible, products_date_last_watched, customers_id, products_id, products_lastposition, products_lastepisode, products_timewatched) values (now(), 1, now(), '" . $user_id . "', '" . $product_id . "', '" . $lastpos ."', '" . $episode . "', 0)"); 
} 
} 

Некоторые примечания: - «tep_db_query» для MySQL запросов, потому что я использую модифицированную версию функции интернет-магазина, в это функционально совпадает со стандартным mysql_query и mysql_fetch_array - идентификатор пользователя 99999999 означает, что пользователь гостя, и их деятельность не должна быть записана - целое «// находят секунды между последней временной меткой и теперь», чтобы отслеживать общее время тратить

+1

Можете ли вы опубликовать полный скрипт? – j08691

+0

эхо запроса в качестве отладки в журнал ошибок. Готов поспорить, у вас нет правильных параметров? – Nanne

+0

время работы всегда будет отличаться, поскольку он использует 'NOW()' из функции MySQL, а не из поля даты, которое у него есть. – Prix

ответ

0

фигу, я я идиот ... переменная URL is $ user_id, но я искал $ customer_id в SQL-запросе ... facepalm

Смежные вопросы