Autor Zpráva
pito
Profil
Zdravím,
Mám počítadlo které mi zjišťuje čas a ip návštěvníka a posílá to do DB,ale mám takový problém,že v databazi mám stejné ip třeba i co kažkou 1hod. a tím pádem mám na webu v počítadle více návštěv než na Toplistu.(můj má př. 18 lidi a Toplis 6 lidi) nějak to blbne má to nastavené aby ip stejná se zapisovala co 12h.Ale nefunguje to.Nevíte někdo co s tým?Nebo čím je lepší nahradit ip?

pocitadlo.php

include('db.php');
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip=="xx.xxx.xx.xxx" || $ip=="xx.xxx.xx.x" || $ip=="0.0.0.2"){ // pokud je IP adresa navstevnika napsana tady, vzkaz se neulozi a zobrazi se mu tato hlaska
				echo "<h3>Nevím kdo jsi,ale ničíš mi počitadlo proto máš BAN! Popros admina ať Tě smaže z banlistu</h3>"; 
				exit; // skript se dale neprovede
			} // konec ip ban
$result = mysql_query("SELECT 1 FROM pocitadlo WHERE ip = '$ip' AND datum > NOW() - INTERVAL 12 HOUR;");
if(mysql_num_rows($result) == 0) {
    mysql_query("INSERT INTO pocitadlo (ip, datum) VALUES('$ip', NOW())");
}
$navstevnost_mesicni = mysql_result(mysql_query("SELECT COUNT(1) FROM pocitadlo WHERE datum > CURDATE() - DAYOFMONTH(CURDATE())+1;"),0);
$navstevnost_tydenni = mysql_result(mysql_query("SELECT COUNT(1) FROM pocitadlo WHERE datum > CURDATE() - (DAYOFWEEK(CURDATE())+5)%7;"),0);
$navstevnost_denni = mysql_result(mysql_query("SELECT COUNT(1) FROM pocitadlo WHERE datum > CURDATE();"),0);
echo "Měsíční návštěvnost je: $navstevnost_mesicni<br>\n";
echo "Týdenní návštěvnost je: $navstevnost_tydenni<br>\n";
echo "Dnešní návštěvnost je: $navstevnost_denni<br>\n";



ve scriptu jde vidět,že jsem tam zkoušel i IP adresy které mi furt se zapisovali do DB banovat.
Spectator
Profil
"SELECT 1 FROM pocitadlo WHERE ip = '$ip' AND datum < NOW() - INTERVAL 12 HOUR"

Nemá být ta podmínka spíš obráceně?
pito
Profil
Spectator:
To máš špatně.Zkoušel jsem to udělat jak píšeš,ale pokažde co aktualizují stránku mně to připíše do počitadla tedy do DB.Takže to mám správně asi.
pito
Profil
tak kde je chyba?
Keeehi
Profil
pito:
Fungovat by to mělo správně.
pito
Profil
Keeehi:
:) to mám od tebe.
Nejde to nějak nahradit třeba cookies?To ip?
Keeehi
Profil
pito:
to mám od tebe
Já vím. A mě to funguje, takže chyba bude nejspíš někde u tebe. Je to celý script, nebo tam ještě někde kolem něco je? Popř. je někam includován?

Nejde to nějak nahradit třeba cookies?To ip?
Samozřejmě že jde. Řádek 7-10 by se upravil. Jenom je tam pak problém, že boti (a nejen ti), kteří s cookies nebudou pracovat, ti tam budou započítáváni pořád.
Spectator
Profil
pito:
Máš pravdu, napsal jsem blbost. Omlouvám se.
pito
Profil
Keeehi:
mám to includované do index.php
<? include "pocitadlo.php"; ?>
pito
Profil
kotroloval jsem index.php a zapomněl jsem smazat
<?php
session_start();
include("db.php");
?>


ale to by nemnělo vliv na to ne?
pito
Profil
smazal jsem to,ale pořád stejné tak už nevím
YoSarin
Profil
A když to zkusíš pustit samotné? tzn přímo jako /pocitadlo.php (místo index.php)
pito
Profil
jak to pustim samotne tak to funguje.Takze to jako nemuzu includovat? nebo to nemuzu dat do index?
YoSarin
Profil
pito:
Tak to znamená, že chyba je patrně někde jinde v kódu který jsi sem vložil (třeba může být zakopaný pes v některém jiném includovaném souboru apod.). Takže buď sem vlož i zbytek kódu (index.php, db.php (poté co smažeš citlivé údaje), nebo si to zkus u sebe otestovat - postupně zakomentovávej a odkomentovávej řádky které by to mohly způsobit...
pito
Profil
pito:
jak to pustim samotne tak to funguje
Ted nevim jestli to počítá mně dobrře nebo Toplist :) v db mám každou jinou ip celkem 5 návštěvníku a v Toplistu je pouze jeden,ale to mi nějak nepasuje hm tak zž nevím.
pito
Profil
YoSarin:
posílám jestli to nějak pomůže:

db.php

<?php
$spojeni = mysql_connect("server","db_name","heslo" ) or die ('Spatne zadane udaje (asi heslo, server nebo jmeno.) v db.php');
mysql_select_db("DB_name", $spojeni) or die ('Spatne zadana databaze v admin/db.php');
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_results=utf8");
?> 



a index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0034)http://stolarskeprace.cz/-->
<HTML lang=cs xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs"><HEAD>
<TITLE>Stolařské práce</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="standard.css" />
<META content="MSHTML 6.00.2900.3395" name=GENERATOR></HEAD>
<meta name='description' content='Stolařské práce nabízí zakázkovou výrobu nabytku na míru, kuchyňské linky, ložnice, obývací pokoje, schodiště, dveře' />
<meta name='keywords' content='stolařství, nábytek, kuchyně, ložnice, dětské pokoje, altán, altány, stolarstvi, Stolařství, skříně, skříňky, kuchyňské linky, truhlarstvi, truhlářství, stolar, truhlar, schodiště' /> 

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-23316646-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>

<link media="screen" rel="stylesheet" href="colorbox.css" />
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

	<script src="colorbox/jquery.colorbox.js"></script>
	<script>
		$(document).ready(function(){
			//Examples of how to assign the ColorBox event to elements
			$("a[rel='example1']").colorbox();
			$("a[rel='example2']").colorbox({transition:"fade"});
			$("a[rel='example3']").colorbox({transition:"none", width:"75%", height:"75%"});
			$("a[rel='example4']").colorbox({slideshow:true});
			$(".example5").colorbox();
			$(".example6").colorbox({iframe:true, innerWidth:425, innerHeight:344});
			$(".example7").colorbox({width:"80%", height:"80%", iframe:true});
			$(".example8").colorbox({width:"50%", inline:true, href:"#inline_example1"});
			$(".example9").colorbox({
				onOpen:function(){ alert('onOpen: colorbox is about to open'); },
				onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
				onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
				onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
				onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
			});
			
			//Example of preserving a JavaScript event for inline calls.
			$("#click").click(function(){ 
				$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
				return false;
			});
		});
	</script>


<body>
  <div id="wrapper">
    <div id="header">
 </div>
    <div id="left">
      <div id="logo">
        <h1>Stolařské práce</h1>
        <p>Realizujeme Vaše sny</p>
      </div>
      <div id="nav">
        <ul>
          <li class="important"><a href="index.php?page=uvod">Úvodní stránka</a></li>
          <li><a href="index.php?page=nabizime">Nabízíme</a></li>
          <li><a href="index.php?page=ukazka-praci&amp;kat=altany">Ukázka prací</a></li>

          <li><a href="index.php?page=kontakt">Kontakt</a></li>
        </ul>
      </div>
      <div id="news">
        <h2>Zakázková výroba</h2>
        
        <p><li> kuchyňské linky <br>
<li> nábytek <br>
<li> schodiště <br>
<li> podlahy <br>
<li> kancelářský nábytek <br>
<li> dětské pokoje  <br>
<li> pergoly atd. </p>
        
<div class="hr-dots"> </div><br><br>
        <h2>Kontakt</h2>
        <p><b>Stolařské práce</b>
<br><br>
<img src="images/phone.png"> 736 133 089<br>
<img src="images/phone.png"> 736 175 266<br>
<img src="images/phone.png"> 731 256 588<br>

<img src="images/email.png"> stolarskeprace@seznam.cz</p>

<br><br><br>
<center>
<a href="http://www.toplist.cz/" target="_top"><img 
src="http://toplist.cz/count.asp?id=929379&logo=mc" border="0" alt="TOPlist" width="88" height="60"/></a>
</center>
<br>
<center>	</center>
<br>



<br><br><br><br>
<h2>Spřátelené weby</h2><br>
<li> <a href="http://www.pilaharatyk.cz/">Pila Haratyk</a> <br>
<li> <a href="http://www.gutskabasta.eu/">Gutská Bašta</a> <br>
<li> <a href="http://www.topkoupelny.7x.cz">Top koupelny</a> <br>
<li> <a href="http://www.shan.cz">Shan</a> <br>
<li> <a href="http://www.matrace-mabo.cz">Matrace mabo</a> <br>
<li> <a href="http://www.bartosini.cz">Bartosini</a> <br>
<br><br><br><br><br><br><br><br>
     
      </div>
      
    </div>


    <?php
          /*
          * Tento kousek vzdy includuje do "stredu" stranky volany soubor pres URL
          * Priklad volani: index.php?page=registrace
          * do stredu se nacte soubor registrace.php
          */
            if (IsSet($_GET['page'])){        // pokud byl odeslan ?page= ...
              $soubor=$_GET['page'];
              $soubor2= dirname($_SERVER['SCRIPT_FILENAME'])."/".$soubor.".php";
              if(file_exists($soubor2)){      //pokud soubor existuje, nacteme ho do stredu
                include $soubor2;
              }else{                //pokud soubor neexistuje, zavolame error404.php
                include "error404.php";
              }
            }else{                  // Pokud nebyl paramentr page volany, nacteme uvod.php
              include "uvod.php";
            }
          /*
          * Tento kousek kódu nám v případě nějakého erroru vypíše Alert.
          * Jednotlivé hlášky jsou v souboru inc/error_msg.php
          * Je tam pole hlášek, vždy voláme číslo hlášky v poli
          * Příklad: index.php?page=uvod&Alert=0
          */
          if(isset($_GET['Alert'])){
            require "inc/error_msg.php"; // V tomto souboru jsou ty hlasky
            $JsAlert=$_GET['Alert'];
            echo '<script language="javascript" type="text/javascript">alert("'.$Rvi[$JsAlert].'");</script>';
          }
          ?>
    <div class="clear"> </div>

    <div id="footer">
      <div id="copyright">
        Copyright &copy; 2010 stolařské práce, Všechna práva vyhrazena. <a href="administrace.php">admin</a>
      </div>
	  <div id="footerline"></div>
    </div>
	
  </div>

</body>
</html>
pito
Profil
jestli to nahodou nedela i to includovani stranek do index.php co?
YoSarin
Profil
pito:
Jen tam nikde nevidím include toho počítadla...
pito
Profil
YoSarin:
To jsem už smazal
byl na řádku 106.
pito
Profil
Prosím o pomoc
YoSarin
Profil
A pořád to ukládá do databáze uživatele se stejnou IP častěji než 1x za 12 hodin? Je dost dobře možné že to tvoje počítadlo zapisuje i boty, které třeba toplist ignoruje...
pito
Profil
jak by to šlo zablokovat či banovat ty boty.Už jsem zkoušel botovat,ale těch ip tam začíná být víc.
YoSarin
Profil
pito:
Ověřováním $_SERVER['HTTP_USER_AGENT'] na text "bot", třeba... A původní problém s vkládáním dat do db více než jednou za 12 hodin už se vyřešil?
pito
Profil
YoSarin:
A původní problém s vkládáním dat do db více než jednou za 12 hodin už se vyřešil?
Ne to jsem nevyřešil.Nevím si rady.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0