$_SERVER['HTTP_REFERER'] werkt niet?
via javascript geprobeerd, en via php
Javascript:
php:
Bij voorbaat dank!
- dan zou je het moeten zien.
of typ je de pagina in?
- dan zal je niks zien.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Doorlinken</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<a href="referrer.php">referrer</a>
</body>
</html>
<html>
<head>
<title>Doorlinken</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<a href="referrer.php">referrer</a>
</body>
</html>
Pagina 2:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>referrer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var ref;
function init () {
if (document.referrer) {
alert (document.referrer);
}
}
window.onload = init;
</script>
</head>
<body>
</body>
</html>
<html>
<head>
<title>referrer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var ref;
function init () {
if (document.referrer) {
alert (document.referrer);
}
}
window.onload = init;
</script>
</head>
<body>
</body>
</html>
De code van jan werkt wel, maar waarom werkt die van PHP niet :-S, ik gebruik het trouwens gewoon voor een 404 documentje, dus hij zou gewoon moeten werken, bovendien heb ik dezelfde code op mijn vorige server ook gebruikt, en daar werkte hij gewoon, dat is wel een jaar geleden ofzo, dus ik dacht misschien heeft het iets met de php versie te maken
Het werkt alleen als je vanaf een link (dus waar je op klikt) naar de site gaat met het refferer script. Niet als je het gewoon in je adresbalk intypt.
Okee, is er ook een manier waarop ik wel de voorgaande pagina kan meegeven? ik heb een scriptje gemaakt wat die pagina + error in de database zet, het enige probleem is dus dat ik de die pagina dus niet mee kan geven =)
Code (php)
1
<a href="http://www.domein.be/map/jebestand.php?ref=<?php echo $_SERVER['PHP_SELF']; ?>">klik hier</a>
Ik heb in mijn htaccess bestandje gezet dat hij naar http://www.domein.nl/error/index.php?error?=[error] moet verwijzen. De bedoeling van index.php is dat hij de url van de pagina die de error veroorzaakte, of dus de url van de pagina die niet bestond, in de database zet, samen met het errornummer, dat lukt in principe allemaal, behalve dus de referrer, die werkt niet. Is er ook een mogelijkheid dat ik wel de pagina in een variabele kan krijgen?
PHPNewbie heeft dat op zijn site... Weet alleen de code niet :-P
zal hem zo ff posten
Edit:
in index.php:
in een htaccessje:
en dan nog 2 pagina's:
404.php
en 403.php
Misschien wat veel werk, maar ik heb nog altijd mijn e-mailtjes keurig binnen gehad.
in index.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
if(isset($_GET['page404']))
{
$maxaant = 3; // Maximale aantal bezoeken in 1 minuut
$time = 60; //tijd in seconden
$error = 'Dit is al de 3e keer deze minuut dat u een pagina niet kunt vinden, dit valt op, en er is dan ook geen e-mail verstuurd naar chess-web';
if(isset($_SESSION['flood']))
{
if((time()-$_SESSION['flood']['TijD']) >= $time)
{
unset($_SESSION['flood']);
$_SESSION['flood']['TijD']=time();
$_SESSION['flood']['Views']=1;
}
else
{
$_SESSION['flood']['Views']++;
if($_SESSION['flood']['Views']>=$maxaant)
{
exit($error);
}
}
if(isset($_SESSION['flood']['Views']))
{
$aantnog = $maxaant - $_SESSION['flood']['Views'];
}
}
else
{
$_SESSION['flood']['TijD']=time();
$_SESSION['flood']['Views']=1;
}
$headers = "From: Chess-web error-reporting <[email protected]>\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n"; //zet html header
$headers .= "X-Priority: 3\n"; //zet priority (3 voor hoge prioriteit)
$headers .= "X-MSMail-Priority: High\n"; //header voor het zo snel mogelijk versturen door de mail server
$headers .= "X-Mailer: PHP/".phpversion(); //header die aangeeft waarvan gemailt is
if($_GET['ip'] == $_SERVER['REMOTE_ADDR'])
{
if(mail('[email protected]',
$_GET['page404'].' niet gevonden',
'De pagina '.$_GET['page404'].' kon niet worden gevonden. Het ip is '.$_GET['ip'], $headers))
{
echo 'Dit bestand of deze map kon niet worden gevonden, er is een e-mail verstuurd naar Chess-web';
}
else
{
echo 'Deze pagina kon niet worden gevonden';
}
}
else
{
echo '<b>FOUT!</b> Kan niet verwerken';
}
}
elseif(isset($_GET['page403']))
{
echo 'Dit deel van de site is verboden';
}
?>
if(isset($_GET['page404']))
{
$maxaant = 3; // Maximale aantal bezoeken in 1 minuut
$time = 60; //tijd in seconden
$error = 'Dit is al de 3e keer deze minuut dat u een pagina niet kunt vinden, dit valt op, en er is dan ook geen e-mail verstuurd naar chess-web';
if(isset($_SESSION['flood']))
{
if((time()-$_SESSION['flood']['TijD']) >= $time)
{
unset($_SESSION['flood']);
$_SESSION['flood']['TijD']=time();
$_SESSION['flood']['Views']=1;
}
else
{
$_SESSION['flood']['Views']++;
if($_SESSION['flood']['Views']>=$maxaant)
{
exit($error);
}
}
if(isset($_SESSION['flood']['Views']))
{
$aantnog = $maxaant - $_SESSION['flood']['Views'];
}
}
else
{
$_SESSION['flood']['TijD']=time();
$_SESSION['flood']['Views']=1;
}
$headers = "From: Chess-web error-reporting <[email protected]>\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n"; //zet html header
$headers .= "X-Priority: 3\n"; //zet priority (3 voor hoge prioriteit)
$headers .= "X-MSMail-Priority: High\n"; //header voor het zo snel mogelijk versturen door de mail server
$headers .= "X-Mailer: PHP/".phpversion(); //header die aangeeft waarvan gemailt is
if($_GET['ip'] == $_SERVER['REMOTE_ADDR'])
{
if(mail('[email protected]',
$_GET['page404'].' niet gevonden',
'De pagina '.$_GET['page404'].' kon niet worden gevonden. Het ip is '.$_GET['ip'], $headers))
{
echo 'Dit bestand of deze map kon niet worden gevonden, er is een e-mail verstuurd naar Chess-web';
}
else
{
echo 'Deze pagina kon niet worden gevonden';
}
}
else
{
echo '<b>FOUT!</b> Kan niet verwerken';
}
}
elseif(isset($_GET['page403']))
{
echo 'Dit deel van de site is verboden';
}
?>
in een htaccessje:
en dan nog 2 pagina's:
404.php
Code (php)
1
2
3
2
3
<?php
header('Location: http://www.chess-web.nl/?page404='.$_SERVER['REDIRECT_URL'].'&ip='.$_SERVER['REMOTE_ADDR']);
?>
header('Location: http://www.chess-web.nl/?page404='.$_SERVER['REDIRECT_URL'].'&ip='.$_SERVER['REMOTE_ADDR']);
?>
en 403.php
Code (php)
1
2
3
2
3
<?php
header('Location: http://www.chess-web.nl/?page403='.$_SERVER['REDIRECT_URL']);
?>
header('Location: http://www.chess-web.nl/?page403='.$_SERVER['REDIRECT_URL']);
?>
Misschien wat veel werk, maar ik heb nog altijd mijn e-mailtjes keurig binnen gehad.
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Is het nou gelukt?
referer.php:
nee:-( jammer genoeg werkt dat niet. Als ik print_r($_SERVER) doe, dan staat er ook nooit ['REDIRECT_URL'] of ['HTTP_REFERER'] bij.. Maar ook geen enkel ander array element wat de url van de vorige pagina bevat
Nee daar staat ie ook niet bij =)
en je gaat niet direct naar de pagina, maar altijd via een andere pagina?
referrer.php
als je op een link drukt, krijg je inderdaad wel die ['HTTP_REFERER'], maar het is toch wel mogelijk om als je bijvoorbeeld /onzin.php intypt, dat je dan doorverwezen wordt naar je 404 pagina, en dan onzin.php bij ['HTTP_REFERER'] hebt?
mijn site doe
zie mijn post van 15:20. Daar heb ik uitgelegd hoe ik het op Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie