09. oktober 2005 - 20:07Der er
101 kommentarer og 1 løsning
Vis side efter antal besøg
Jeg skal bruge et script eller en funktion som kan dette:
Den skal fungere på den måde at hvis du f.eks. er gæst nr. 50 som kommer ind på min side så skal du sender videre til en bestemt side. Men hvis du er nr. 51 skal du bare videre til den normale side.
Du skal ihf have fat i en hit counter så! Og så kan du jo aflæse brugerens nummer! (altså hvis brugerbesøg == 50) send brugeren til denne side... Ellers gør som normalt.
webalizer er et program som udelukkende køre dine logfiler igennem mener jeg. Så det kan du nok ikke bruge til direkte at sende en bruger andre steder hen! (men jeg kan tage fejl)
Det letteste ville nok være at oprette et lille simpelt script der tæller dine besøg op f.eks. i en database, og så lave et tjek på denne og omdirrigere %50
- - - - connect.php - - - - $DBName = 'DATABASENAVN'; $conn = @mysql_connect("DATABASE", "BRUGER", "PASSWORD") or die("Der kunne ikke oprettes forbindelse til databasen i øjeblikket"); mysql_select_db("DATABASENAVN"); - - - - - -
- - - - SCRIPT - - - - include("connect.php"); # Tæller 1 op i besøgs tælleren $count = mysql_query("UPDATE visitcounter SET count=count+1 WHERE name='Visitcounter'");
#Tjekker antal besøg og omdirrigere hvis nødvendigt $visits = mysql_result(mysql_query("SELECT count FROM visitcounter WHERE name='Visitcounter'"),0); if($visits%50 == 0) { header("Location: side.php"); }
echo "hej"; - - - - - - NB!! SCRIPT placeres i toppen, af siden som skal tælle antal besøg og omdirrigere hvis nødvendigt
- - skal lige rettes til mht login til database (connect.php)
`CREATE TABLE ` visitcounter ` (` TINYINT, `` name ` VARCHAR( 255 ) NOT NULL ,` TINYINT, `` count ` INT NOT NULL ,` TINYINT, `PRIMARY KEY ( ` name ` ) ` TINYINT BINARY, `);` TINYINT, `INSERT INTO ` visitcounter ` ( ` name ` , ` count ` ) ` TINYINT, `VALUES (` TINYINT, `'Visitcounter', '0'` TINYINT, `);` TINYINT ) MySQL returnerede:
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'visitcounter` (` TINYINT, ``name` VARCHAR( 255 ) NOT NULL ,` TI
<title>connect</title> </head> $DBName = 'DATABASENAVN'; $conn = @mysql_connect("vinddet_data", "vinddet_admin", "20492049") or die("Der kunne ikke oprettes forbindelse til databasen i øjeblikket"); mysql_select_db("vinddet_data"); <body> </body> </html>
Du skal ikke blande det sammen med html, men egentlig bare kopiere min kode. Du skal huske også at rette DATABASENAVN.
"or die("Der kunne ikke oprettes forbindelse til databasen i øjeblikket");" Ovenstående betyder at der vil komme en kontakt, hvis der ikke kan laves forbindelse til din database.
side2.php - - - - - <? include("connect.php"); # Tæller 1 op i besøgs tælleren $count = mysql_query("UPDATE visitcounter SET count=count+1 WHERE name='Visitcounter'");
#Tjekker antal besøg og omdirrigere hvis nødvendigt $visits = mysql_result(mysql_query("SELECT count FROM visitcounter WHERE name='Visitcounter'"),0); if($visits%50 == 0) { header("Location: side.php"); }
Nu virker side2.php - Men jeg kan ikke få forbindelse med databasen...
<?php $DBName = 'vinddet_data'; $conn = @mysql_connect("vinddet_data", "admin", "20492049") or die("Der kunne ikke oprettes forbindelse til databasen i øjeblikket"); mysql_select_db("vinddet_data"); ?>
<?php $DBName = 'vinddet_data'; $conn = @mysql_connect("mydb2.surftown.dk", "admin", "20492049") or die("Der kunne ikke oprettes forbindelse til databasen i øjeblikket"); mysql_select_db("vinddet_data"); ?>
Jeg tror ikke helt på at dit brugernavn til databasen er admin, når den er hos surftown. Du må have nogle papirer fra dem, hvor du kan se alle oplysningerne...
Men kan det ikke være sådan at de bliver sendt videre til anden side i stedet for hej. Og kan det evt. laves sådan et der måske er 5 forskellige sider altså random..
Prøv at åbne siden i browseren: http://www.vinddet.dk/side2.php og tjek kilde-koden (sourcecode). Her vil du kunne se det smarte ved serverside-scripting (php), nemlig at man ikke kan aflæse din php kode, og dermed oplysninger til databasen.
<? include("connect.php"); # Tæller 1 op i besøgs tælleren $count = mysql_query("UPDATE visitcounter SET count=count+1 WHERE name='Visitcounter'");
#Tjekker antal besøg og omdirrigere hvis nødvendigt $visits = mysql_result(mysql_query("SELECT count FROM visitcounter WHERE name='Visitcounter'"),0); if($visits%3 == 0) { header("Location: index.html, tilmeld.html, forside.html"); } ?>
Hvis jeg gøre sådan, så sender den mig ingen steder indtil jeg når 3, og efter det sker der heller ikke noget...
Og jeg fik lige lagt det ind i det forkert script: - - - - SCRIPT ver. 2- - - - <? include("connect.php"); # Tæller 1 op i besøgs tælleren session_start(); if(!isset($_SESSION["visitcounter"]) || $_SESSION["visitcounter"] != 1) { $count = mysql_query("UPDATE visitcounter SET count=count+1 WHERE name='Visitcounter'"); $_SESSION["visitcounter"] = 1; }
#Tjekker antal besøg og omdirrigere hvis nødvendigt $visits = mysql_result(mysql_query("SELECT count FROM visitcounter WHERE name='Visitcounter'"),0); if($visits%50 == 0) { $random = rand(1,5); switch($random) { case 1: header("Location: side1.php"); break;
I starten vil det være sådan at folk kommer ind på den samme side efter 50 besøg... Men de skal altså op til de 50 besøg sendes rundt til forskellige sider... det smarte ville jo så være hvis man kunne iframe så man kunne have en tilbage knap eller prøv igen...
Ja det ville faktisk være rigtigt fedt hvis det var sådan at man blev sendt videre til den samme side op til de 50 besøg. På den side skulle der så være en iframe som skulle vise f.eks. 5 forskellige sider...
#Tjekker antal besøg og omdirrigere hvis nødvendigt $visits = mysql_result(mysql_query("SELECT count FROM visitcounter WHERE name='Visitcounter'"),0); if($visits%5 == 0) { header("location: " . $randomSide); } else { header("location: iframe.php"); } ?>
Skulle jo gøre sådan at hvis du ikke er gæst nr. 50 så skulle du sendes videre til en side (iframe.php) og hvis du så er gæst nr. 50 skal du sendes videre til 5 randoms sites
Ja den virker fint, bare på den forkerte måde... Den skulle virke på den måde at den sender en videre til header("location: iframe.php"); og når man så nåede tíl 50 skulle man sendes videre til en random sites...
Lige nu er det sådan er hvis du er gæst nr. 50 kan du bare f5 hele tiden og kommer rundt til de forskellige sider... kan det laves om så gæst 50 kun ser siden 1 gang og så starten han forfra igen...
Jeg tror faktisk du kunne lave noget med srand() inden du kalder rand() Prøv at kald: srand(session_id()); Så vil den altid lave samme random tal for en bruger. (altså indtil han lukker sin browser og prøver igen)
Det skal være sådan at hvergang man kalder "side2.php" skal den give dig et nyt nr.
Fordi lige nu, hvis du er nr. 5 så kan du bare surfe rundt på alle random siderne.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.