Autor Zpráva
Linda
Profil
Zdary. Tady v diskusi jsem se ptala na to samé, jen jsem to chtěla javascriptem... WertriK mi vnuknul pěknou myšlenku, že by to šlo přes PHP. Zkusila jsem to napsat, ale je tam někde chyba - nic mi to nevypíše...


<?php 

$stranka = $_SERVER["HTTP_REFERER"];
if ($stranka == "http://www.seznam.cz") echo "Doufám, že jste si na Seznamu dobře početl!";
elseif ($stranka == "http://www.centrum.cz") echo "Co mají na Centru nového?";
elseif ($stranka == "http://www.atlas.cz") echo "V mapách na atlasu se dobře hledá...";
?>


Díky za každou pomoc...
djlj
Profil
<?

$stranka = $_SERVER["HTTP_REFERER"];

if (eregi("seznam.cz", $stranka)){
echo "Doufám, že jste si na Seznamu dobře početl!";
}
elseif (eregi("centrum.cz", $stranka)){
echo "Co mají na Centru nového?";
}
elseif (eregi("atlas.cz", $stranka)){
echo "V mapách na atlasu se dobře hledá...";
}

?>
Linda
Profil
djlj

Ne... Sorry, díky moc, ale mně to prostě vůbec nic nevypíše... :o(
djlj
Profil
Linda
Jen tobě, nebo všem? Neblokuješ v prohlížeči referer? Hoď sem link na tu stránku a taky to, odkud chodíš..
Linda
Profil
djlj

Nefunguje to ani u mě na locahostu, ani na serveru, zkoušim to jenom já. Chodim ze Seznamu rovnou na zkoušku ke mně... Jestli blokuju referer? Mno, jestli je blokování implicitně nastavený, tak asi jo... :o)
djlj
Profil
Linda
Hmm, máš pravdu.. Ale když jsem to zkusil u sebe - http://search.seznam.cz/searchScreen?w=http%3A%2F%2Fvsevjednom.cz%2Fte st.php - tak to funguje.. :/


Zkus třeba $stranka = $_SERVER["HTTP_REFERER"]; zaměnit za $stranka = $HTTP_REFERER; .. ale tím to s největší pravděpodobností nebude...
Honza Hučín
Profil
Zkusil bych vůbec vypsat $_SERVER['HTTP_REFERER'], co v té proměnné je. Nebo otestovat, jestli existuje, případně zda je prázdná. Pak bych zkusil vypsat jiné serverové proměnné, např. user-agenta.
Linda
Profil
djlj

Kdepak... Nic se nestalo. Na localhostu to pořád hlásí jenom chybovku "Notice: Undefined variable: HTTP_REFERER in c:\program files\easyphp1-8\www\zkouska.php on line 3"... :o(
Linda
Profil
Honza Hučín

Při pokusu vypsat samotnou proměnnou mi to pořád hlásí jenom chybovku, a to tu, že není definovaná... :o(


djlj

Aby sis nemyslel, že jsem ten JS od tebe nezkusila - zkusila, ale i přestože ho mám zapnutý ( přepínač stylů mi přes JS jede OK), vypíše mi to "Tyto vlastnosti nejsou Vaším prohlížečem podporovány"
Honza Hučín
Profil
Pošli sem prosím aktuální zdroják toho souboru zkouska.php.
Kde to hostuješ? Dalo by se vypsat phpinfo?
djlj
Profil
Linda
Ten JS jsem jen tak střelil... A ten tvůj přepínač stylů pro změnu mně nefunguje...

Co takhle ještě zkusit změnit uvozovky... $_SERVER['HTTP_REFERER']; ? :)


Zkus si vypsat print_r($_SERVER); ...
WanTo
Profil
Linda
Jaký máš server? Apache?
Linda
Profil
Honza Hučín

<?php //pokus vypsat obsah proměnné
$stranka = $HTTP_REFERER;
echo $stranka;
?>

<?php //kod od djlj
$stranka = $_SERVER['HTTP_REFERER'];
if (eregi("/seznam.cz", $stranka)){
echo "Doufám, že jste si na Seznamu dobře početl!";
}
elseif (eregi("centrum.cz", $stranka)){
echo "Co mají na Centru nového?";
}
elseif (eregi("atlas.cz", $stranka)){
echo "V mapách na atlasu se dobře hledá...";
}

?>

<!-- JS od djlj -->
<script type="text/javascript">
<!--
var stranka = escape(document.referrer);
if (stranka == "http://www.seznam.cz")
document.write("Doufám, že jste si na Seznamu dobře početl!")
else if (stranka == "http://www.centrum.cz")
document.write("Co mají na Centru nového?")
else document.write("Tyto vlastnosti nejsou Vaším prohlížečem podporovány")
// -->
</script>

Hostuju na webzdarma... Phpinfo? Asi jo, ale přiznam se, že nevim jak. :o)

djlj

Uvozovky nereagujou, přepínač stylů funguje, ale styly tam nejsou, protože nejsou dodělaný... ;o)

Co mi má vypsat print_r($_SERVER);???
Linda
Profil
WanTo

Jo, Apače... :o)
djlj
Profil
Linda
Jo, ten javascript rozhodně nemůže fungovat, protože testuje, zda jdeš přímo z "http://www.seznam.cz" a ne z nějaké podstránky (hledání).. chce to ošetřit podobně jak u PHP, ale v JS to neumím.


Phpinfo vypíšeš phpinfo();


print_r($_SERVER); ti vypíše vše, co obsahuje proměnná $_SERVER :)
Honza Hučín
Profil
Linda
<?
print_r($_SERVER);
?>

Tohle vypíše obsah proměnné (pole) $_SERVER. V ní by měl být ten referer. Dej to do zkouska.php (to, co tam je teď, vyhoď) a uvidíme.
Linda
Profil
djlj
print_r($_SERVER); Mno, pokud mi tohleto vypíše obsah proměnné, tak už se nedivim, že to nefunguje - ukázka toho, co se mi vypsalo:

"Array ( [COMSPEC] => C:\WINDOWS\system32\cmd.exe [DOCUMENT_ROOT] => c:/program files/easyphp1-8/www [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/pl ain;q=0.8,image/png,*/*;q=0.5 [HTTP_ACCEPT_CHARSET] => windows-1250,utf-8;q=0.7,*;q=0.7 [HTTP_ACCEPT_ENCODING] => gzip,deflate [HTTP_ACCEPT_LANGUAGE] => cs,en-us;q=0.7,en;q=0.3 [HTTP_CONNECTION] => keep-alive [HTTP_COOKIE] => style=blue [HTTP_HOST] => localhost [HTTP_KEEP_ALIVE] => 300 [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 [PATH] => C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\EA SYPH~1\Apache;C:\PROGRA~1\EASYPH~1\PHP [REMOTE_ADDR] => 127.0.0.1 [REMOTE_PORT] => 3117 [SCRIPT_FILENAME] => c:/program files/easyphp1-8/www/zkouska.php [SERVER_ADDR] => 127.0.0.1 [SERVER_ADMIN] => admin@localhost [SERVER_NAME] => localhost [SERVER_PORT] => 80 [SERVER_SIGNATURE] =>"

Seznam, Centrum a Atlas jsou v tý ukázce jenom, abych zjistila, jestli to funguje - chci pomocí zjištění stránky, ze který uživatel přišel vypisovat kolonku Předmět na kontaktnim formuláři, takže místo seznam.cz, centrum.cz atd bude fotky.php, grafika.php atd... :o)
Honza Hučín
Profil
No vidíš. A mně to referer vypíše:

Array (vynechávám pro stručnost... [HTTP_REFERER] =>http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic= 25 345 zase vynechávám)

Z toho plyne, že u návštěvníků zvenčí se referer neblokuje a funguje to.
Linda
Profil
Honza Hučín

Huráá... Tak aspoň něco - už jsem to taky našla... Teď už mam problém jenom se skriptem... :o)

Update! Už jsem na to přišla...

V tomhle:

<?php //kod od djlj
$stranka = $_SERVER['HTTP_REFERER'];
if (eregi("lin.wz.cz/zkouska2.php", $stranka)){
echo "Huraaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
if (eregi("lin.wz.cz/zkouska3.php", $stranka)){
echo "Funguje!";
}
elseif (eregi("diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=2 5345&page=-1", $stranka)){
echo "Není možná!!!! Že by to fakt fungovalo???!!!";
}

?>

Nefunguje "odkaz" na zdejší diskusi. Sice se vypíše v

<?php //pokus vypsat obsah proměnné
$stranka = $HTTP_REFERER;
echo $stranka;
?>

ale v kódu to nic neudělá... A nenapíše ani chybu syntaxe... :o( Ale jinak díky moc, chlapi. Moc jste mi pomohli, s tímhle už si nějak poradim... :o)
djlj
Profil
Proč máš dvakrát po sobě if?
Linda
Profil
djlj

ehm... Chybička... Dík. Nic to ale nemění na tom, že když se tam vydáš odkazem odsud z diskuse, nevypíše se ti to, co by mělo...
djlj
Profil
Linda
Mně se vypíše "http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=2 5345"
Linda
Profil
djlj

To mně taky, ale už se mi nevypíše
elseif (eregi("diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=2   5345&page=-1", $stranka)){

echo "Není možná!!!! Že by to fakt fungovalo???!!!";
}


"Není možná..." prostě zůstane někde viset, přestože u zbývajících dvou neni problém, tam se hlášky vypíšou tak, jak mají...
zkouška 2 a tady zkouška 3
djlj
Profil
Linda
ono je celkem logické, že to nefunguje... dej tam

elseif (eregi("diskuse.jakpsatweb.cz", $stranka)){
echo "Není možná!!!! Že by to fakt fungovalo???!!!";
}
Linda
Profil
djlj

:o) OK. Ještě mi prosim vysvětli, proč to je logický, že to nefunguje a slibuju, že už dám pokoj! :o)
djlj
Profil
Linda
eregi zjišťuje, zda řetězec $stranka obsahuje diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=25345&pag e=-1 .. což samozřejmě vyhodí false, protože já jsem šel z trochu jiného odkazu... když tam necháš celou doménu eregi("diskuse.jakpsatweb.cz", $stranka), tak ať kliknu z jakéhokoli odkazu tady na diskuzi (a mám povolené přenášení refereru), vrátí true...

Asis to nepochopila, že? :)
Linda
Profil
djlj

Jo, OK, teď už to chápu (taková blondýna nejsem!) :o) Ještě jednou díky moc!
djlj
Profil
Linda
Není zač :))
Honza Hučín
Profil
djlj
Malá technická připomínka k regulárnímu výrazu: pokud chceš testovat, zda řetězec obsahuje "diskuse.jakpsatweb.cz" (s tečkou), musí být ta tečka escapovaná, protože je to řídící znak. Tedy
eregi("diskuse\.jakpsatweb\.cz",$stranka)

Tečka jako taková znamená libovolný znak, takže to funguje i bez escapování, akorát by to připouštělo třeba diskuse-jakpsatweb.cz .
Linda
Profil
Honza Hučín

Dík. To určitě použiju, i když to bude jenom na mých stránkách, takže nepředpokládám nějaká podobná faux pas... :o)
Toto téma je uzamčeno. Odpověď nelze zaslat.