Met dit script wordt de referer niet in de database gezet.
Hij zet er niets in dus ook geen NULL

Hoe komt dit?

De bezoeker drukt op een pagina op de link en wordt dan eerst naar de tussenpagina verwezen. (website.php)
Hier staat het volgende script op:

EDIT: typfout in script

<?php
include("diversen.php");
//maak verbinding met de database

$connection = mysql_connect ($hostname,$user,$password) or die 
( "Sorry maar ik kan geen contact maken met de database, probeer het later opnieuw of ververs uw browser.");

$db = mysql_select_db ($database, $connection) or die 
("Sorry, maar ik kan de database niet openen.");


if(isset($_GET['id']) && (is_numeric($_GET['id']))) {
$website_id = $_GET['id'];
}else{
	$website_id = NULL;
}
// Gegevens voor een nieuw logboekitem verzamelen:
$datumtijd = date("Y-m-d H:i:s");                    // Huidige datum

if (isset($_SERVER['REQUEST_METHOD'])) {   // HTTP-methode
   $methode = $_SERVER['REQUEST_METHOD'];
} else {
   $methode = NULL;
}
if (isset($_SERVER['PHP_SELF'])) {         // Huidige pagina
   $pagina = $_SERVER['PHP_SELF'];
} else {
   $pagina = NULL;
}
if (isset($_SERVER['HTTP_REFERER'])) {    // Vorige pagina
   $referer = $_SERVER['HTTP_REFERER'];
} else {
   $referer = NULL;
}
if (isset($_SERVER['REMOTE_ADDR'])) {      // Extern IP-adres
   $ip_adres = $_SERVER['REMOTE_ADDR'];
} else {
   $ip_adres = NULL;
}
if (isset($_SERVER['HTTP_USER_AGENT'])) {  // Gebruikte browser
   $browser = $_SERVER['HTTP_USER_AGENT'];
} else {
   $browser = NULL;
}




// MySQL-toevoegquery opstellen:
$sql  = "INSERT INTO `kliks` ";
$sql .= "(`id`, `datumtijd`, `website_id`, `methode`, `pagina`, `referer`, `adres`, `browser`) ";
$sql .= "VALUES ";
$sql .= "('', '$datumtijd', '$website_id', '$methode', '$pagina', '$referer', '$ip_adres', '$browser') ";
$sql .= "; ";
$res =mysql_query($sql) or die(mysql_error());
if(mysql_affected_rows() >0){
$resultLink = mysql_query("SELECT website FROM links WHERE links_id = ".$_GET['id']) or die(mysql_error());
$rowLink = mysql_fetch_object($resultLink);
header("Location:".$rowLink->website);
exit("U wordt doorgestuurd");
}else{
echo "er is iets misgegaan";
}


?>

Er wordt pas een referer aangemaakt als je van de vorige site hebt 'doorgeklikt' naar de jouwe.

Verder heeft 'NULL' geen waarde en zal dus een leeg veld in je database worden aangemaakt ;-) .

[edit]Referer is volgens mij ook maar met één R. Ik bedoel dus refeRer ipv refeRRer.[/edit]
Aha

Hoe kun je dan in de database zetten van welke pagina de bezoeker afkomt op mijn site. Bv. http://www.kijk-vergelijk.nl/?cat_id=2 (kinderen)

Dit gaat nu met dit stukje:
<?php
if (isset($_SERVER['PHP_SELF'])) { // Huidige pagina
$pagina = $_SERVER['PHP_SELF'];
} else {
$pagina = NULL;?>

Maar dan geeft hij de titel op van de tussenpagina (/website.php -> http://www.kijk-vergelijk.nl/website.php?id=307)
Bovenstaand stukje code geeft gewoon weer welke de huidige pagina is (die op je eigen server dus). Om te achterhalen waar je bezoekers vandaan komen moet je $_SERVER['REFERER'] gebruiken ;-) .

Of begrijp ik je vraag verkeerd?
Uhm, het is denk ik niet eenvoudig uit te leggen.

Of ik leg het niet goed uit, kan ook :)

Je komt op mijn website.
Je klikt op een link en wordt dan doorgestuurd naar een tussenpagina waar het bovenstaande script op staat. (website.php)

Daar staat oa. het volgende op:
<?php
if (isset($_SERVER['PHP_SELF'])) { // Huidige pagina
$pagina = $_SERVER['PHP_SELF'];
} else {
$pagina = NULL;
}
if (isset($_SERVER['HTTP_REFERER'])) { // Vorige pagina
$referer = $_SERVER['HTTP_REFERRER'];
} else {
$referer = NULL;
}
?>

Ik had dus gehoopt dat nu bij HTTP_REFERER in de database het adres zou staan van waar de bezoeker vandaan komt op mijn pagina.
Dus bv. van de pagina "kinderen".
Maar in de database staat helemaal niets.

PHP_SELF werkt wel goed. Daar staat in de database: /website.php (dit is dus de naam van de tussenpagina)
referer schrijf je met 1 r ;) dus:

<?php
if (isset($_SERVER['PHP_SELF'])) { // Huidige pagina
$pagina = $_SERVER['PHP_SELF'];
} else {
$pagina = NULL;
}
if (isset($_SERVER['HTTP_REFERER'])) { // Vorige pagina
$referer = $_SERVER['HTTP_REFERER']; // Deze was nog niet aangepast
} else {
$referer = NULL;
}
?>

[edit]ponzi had het al gezegd, je was 1 R vergeten te veranderen[/edit]
Scrptr schreef op 03.03.2007 19:10
referer schrijf je met 1 r ;) dus:

<?php
if (isset($_SERVER['PHP_SELF'])) { // Huidige pagina
$pagina = $_SERVER['PHP_SELF'];
} else {
$pagina = NULL;
}
if (isset($_SERVER['HTTP_REFERER'])) { // Vorige pagina
$referer = $_SERVER['HTTP_REFERER']; // Deze was nog niet aangepast
} else {
$referer = NULL;
}
?>


ja, dat heb ik in mijn script al aangepast maar ik had het hier uit gecopieerd en niet goed gewijzigd.

Maar het maakt geen verschil.
Ik neem aan dat er op de website wordt gewerkt met een sessie?

Als je daar nu eens de http referer in zet met bepaalde voorwaarden.

Als bijvoorbeeld de http referer leeg is dan veranderen je de sessie variabele niet. Zo heb je in iedergeval altijd een gevulde http referer
hmm, daar kan ik niet zo mee uit de voeten.

Als ik dit doe: echo $HTTP_REFERER['HTTP_REFERER'];
laat hij alleen de letter "h" zien.
Dit zou beter moeten werken:

<?php

echo $_SERVER['HTTP_REFERER'];

?>

Maar wat ik bedoel is op iedere pagina of in een centraal script wat overal wordt ingevoegd (het database/config script ofzo...) het volgende zetten:

<?php
if( !empty($_SERVER['HTTP_REFERER']) )
{
$_SESSION['vorig_url'] = $_SERVER['HTTP_REFERER'];
}
?>

En dit uiteraard na de functie session_start().
Er zat nog ergens een typfout en nu is het gelukt!

Bedankt voor alle hulp.

Reageren