Хорошо, если вы пробовали то, что вам сказали выше или ранее (это возможные причины), и он по-прежнему отображает код вместо его выполнения, тогда есть одна вещь, которую вы делаете неправильно, которая не была устранена , URL-адрес, который вы использовали для доступа к вашему php-коду; некоторые люди пытаются выполнить свой php-код, просто перетащив файл .php в веб-браузер. это неправильная практика и может привести к этой проблеме. если вы сохранили файл как «test.php» в папке C: // wamp / www, вы должны получить доступ к этому файлу следующим образом: localhost: //test.php. такая ошибка возникает при доступе к ней следующим образом: localhost: //wamp/www/test.php
Надеюсь, я помог кому-то там. o / ~ Daniel
Проработав более 5 лет с поисковыми системами, я могу сказать вам, что стандартного способа получить значение запроса не существует.
Как уже было сказано в других ответах, первым шагом является проверка заголовка HTTP_REFERER
. Предполагая, что вы используете Rails, вы можете получить его из запроса
request.referrer
. В противном случае вам нужно извлечь его из заголовков запроса другим способом.
Когда у вас есть реферер, у вас есть 3 основных возможности:
Первый вариант прост. Вы хотите знать, является ли реферер поисковой системой. Если да, то вам нужно извлечь запрос.
Самый распространенный способ сделать это - использовать контрольный список. Контрольный список обычно представляет собой список ключей / значений, где ключ - это домен поисковой системы, а значение - имя параметра строки запроса, который содержит значение запроса.
google.com,q
yahoo.com,p
...
Такой же подход используется в Google Analytics. Из файла ga.js
g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");
Первый узел соответствует ключу и значению, первый выигрывает.
Попробуйте Google Analytics. Он даст вам подробную информацию о поисковых системах, поисковых запросах и ссылающихся сайтах.
В ruby вы можете получить referrer, сделав
request.referrer
Параметры запроса доступны в ваших представлениях и контроллерах. Если вы хотите увидеть другие параметры, доступные в request
, то просто добавьте
<%= request.inspect %>
в одно из ваших представлений и зайдите на страницу, чтобы увидеть их.
Как насчет этого?
http://borkware.com/quickies/single?id=73
или этого
http://www.cs.utah.edu/dept/old/texinfo/emacs19/emacs_26.html#SEC184
-121--1309627-$msg =
chr(0x20) // Size = 32 (4+1*28)
. chr(0x1) // Type = 1
. chr(0x0) // ReqI=0
. chr(0x1) // NumC=1
. chr(0x1) . chr(0x0) // node=1
. chr(0x2) . chr(0x0) // lap=2
. chr(0x3) // puid=3
. chr(0x5) // pos=5
. chr(0x10) // info=16
. chr(0x0) //sp3=0
. chr(0x0) . chr(0x0) . chr(0x1) . chr(0x0) // x=65536
. chr(0x0) . chr(0x0) . chr(0x2) . chr(0x0) // y=65536*2
. chr(0x0) . chr(0x0) . chr(0x3) . chr(0x0) // z=65536*3
. chr(0x0) . chr(0x20) // speed=8192
. chr(0x0) . chr(0x10) // dir=4096
. chr(0x0) . chr(0x8) // heading=2048
. chr(0x0) . chr(0x4) // AngVel=1024
;
$IS_MCI = unpack('CSize', $msg);
if ( strlen($msg) < $IS_MCI['Size'] ) {
die("not enough data");
}
$IS_MCI += unpack('CType/CReqI/CNumC', substr($msg, 1));
$IS_MCI['Info'] = array();
for($i=0; $i<$IS_MCI['NumC']; $i++) {
$data = substr($msg, 4+($i*28), 28);
$IS_MCI['Info'][] = unpack('vNode/vLap/CPLID/CPosition/CInfo/CSp3/lX/lY/lZ/vSpeed/vDirection/vHeading/sAngVel', $data);
}
print_r($IS_MCI);
печатает
Array
(
[Size] => 32
[Type] => 1
[ReqI] => 0
[NumC] => 1
[Info] => Array
(
[0] => Array
(
[Node] => 1
[Lap] => 2
[PLID] => 3
[Position] => 5
[Info] => 16
[Sp3] => 0
[X] => 65536
[Y] => 131072
[Z] => 196608
[Speed] => 8192
[Direction] => 4096
[Heading] => 2048
[AngVel] => 1024
)
)
)
. Теперь этот код делает некоторые предположения, которые, возможно, не следует воспринимать как нечто само собой разумеющееся (т.е. добавить гораздо больше обработки ошибок/данных для чтения).
Размер
должен быть между 0... 228, NumC должен быть между 0... 8 и оба значения должны соответствовать друг другу и так далее. слова
я использовал v
, которое означает "беззнаковый короткий (всегда 16 бит, маленький порядковый номер байта ). Но для int
я использовал l
: «signed long (always 32 bit, machine byte order )». Это нормально на моей машине. Но найдите в документации протокола полноту данных. Данные теста в $ msg взяты из результата
__declspec(align(1)) struct CompCar // Car info in 28 bytes - there is an array of these in the MCI (below)
{
word Node; // current path node
word Lap; // current lap
byte PLID; // player's unique id
byte Position; // current race position : 0 = unknown, 1 = leader, etc...
byte Info; // flags and other info - see below
byte Sp3;
int X; // X map (65536 = 1 metre)
int Y; // Y map (65536 = 1 metre)
int Z; // Z alt (65536 = 1 metre)
word Speed; // speed (32768 = 100 m/s)
word Direction; // direction of car's motion : 0 = world y direction, 32768 = 180 deg
word Heading; // direction of forward axis : 0 = world y direction, 32768 = 180 deg
short AngVel; // signed, rate of change of heading : (16384 = 360 deg/s)
};
__declspec(align(1)) struct IS_MCI // Multi Car Info - if more than 8 in race then more than one of these is sent
{
byte Size; // 4 + NumC * 28
byte Type; // ISP_MCI
byte ReqI; // 0 unless this is a reply to an TINY_MCI request
byte NumC; // number of valid CompCar structs in this packet
CompCar Info[1]; // example: one element, fixed
};
int _tmain(int argc, _TCHAR* argv[])
{
struct IS_MCI mci = {
32, 1, 0, 1,
{ 1, 2, 3, 5, 16, 0, 65536, 65536*2, 65536*3, 8192, 4096, 2048, 1024 }
};
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD( 2, 2 );
int err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return 1;
}
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
addr.sin_port = htons( 8081 );
if ( 0!=connect( s, (SOCKADDR*) &addr, sizeof(addr) ) ) {
printf("%X ", WSAGetLastError());
return 0;
}
send(s, (const char*)&mci, sizeof(mci), 0);
shutdown(s, SD_BOTH);
closesocket(s);
return 0;
}
-121--4460150- Проверьте заголовок запроса HTTP Референт
ваших посетителей ( $ _ SERVER ['HTTP _ REFERER']
в PHP Это, в 90% всех случаев, даст вам страницу, с которой пришел ваш посетитель. Если это страница поисковой системы, то необходимо декодировать строку запроса ссылки и анализировать данные из нее (обратите внимание, что формат последовательности запроса может измениться).
Это больше работы, чем Google Analytics, и простой пример, который я привел, не дает вам столько данных; но может быть сделано, если вы не комфортно с Google делает сбор данных для вас.
Думаю, вам будет очень полезно проверить это. В нем подробно объясняется, как делать именно то, что вы пытаетесь сделать: