Avatar billede stieper Nybegynder
15. september 2005 - 19:48 Der er 7 kommentarer og
1 løsning

Kan ikke få denne counter til at virke

Hej - har i en løsning til, hvorfor nedenstående counter ikke tilføjer ip's til databasen, og dermed tilføjer hits.

1. fil er counter.php
<?php
//Connect to database
include_once("connect.php");

//Site defines
//Set count type:
// 1 --> unique, only count each ip one time
// 2 --> All, count hits, ip not a problem

$type = 1;

//Function to get user ip (stolen from phpskills.com :)
function get_user_ip(){     
    $ipParts = explode(".", $_SERVER['REMOTE_ADDR']);
    if ($ipParts[0] == "165" && $ipParts[1] == "21") {   
        if (getenv("HTTP_CLIENT_IP")) {
            $ip = getenv("HTTP_CLIENT_IP");
        } elseif (getenv("HTTP_X_FORWARDED_FOR")) {
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        } elseif (getenv("REMOTE_ADDR")) {
            $ip = getenv("REMOTE_ADDR");
        }
    } else {
      return $_SERVER['REMOTE_ADDR'];
      }
      return $ip;
}

// Use this to check that the ip was already entered into the database (no entry is made)
$match = false;
$user_ip = get_user_ip();
$get_user = @mysql_query("SELECT * FROM ips WHERE `ip`='$user_ip'");

if(@mysql_num_rows($get_user) > 0){
    $match = true;
} else {
    $insert_ip = @mysql_query("INSERT  INTO ips (`ip`) VALUES ('$user_ip')");
}   

// Check Type Kind       
if($type == 2 || ($type == 1 && $match == false)){
    $get_last_hit = @mysql_fetch_array(@mysql_query("SELECT * FROM myhits WHERE `name`='frontpage'"));
    $get_last_hit[1]++;

    $update_count = @mysql_query("UPDATE myhits SET hits='$get_last_hit[1]' WHERE name='frontpage'");
} else {
    $get_last_hit = @mysql_fetch_array(@mysql_query("SELECT * FROM myhits WHERE `name`='frontpage'"));
}

// It is safe to change these information to your needs
if($type == 2){
    echo 'Page\'s Total hits: ' . $get_last_hit[1];
} else {
    echo 'This Page Has: ' . $get_last_hit[1] . ' Unique hits!';
}

?>

2. fil er connect.php
<?php
define ('DB_USER', 'xxxxxxxx');  // Database User Name
define ('DB_PASSWORD', 'xxxxxxxx');    // Database User Password
define ('DB_HOST', 'localhost');  // Host Name (mostly localhost)
$dbc = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD);  // Establishes connection
mysql_select_db('xxxxxxx');    // database name to connect to
   
?>

3. fil er counter.sql som jeg har kørt i phpmyadmin

#
# Table structure for table `ips`
#

CREATE TABLE `ips` (
  `ip` varchar(255) NOT NULL default ''
) TYPE=MyISAM;

#
# Dumping data for table `ips`
#

INSERT INTO `ips` VALUES ('127.0.0.1');

# --------------------------------------------------------

#
# Table structure for table `myhits`
#

CREATE TABLE `myhits` (
  `name` varchar(255) NOT NULL default '',
  `hits` varchar(255) NOT NULL default ''
) TYPE=MyISAM;

#
# Dumping data for table `myhits`
#

INSERT INTO `myhits` VALUES ('frontpage', '26');



Kan i se hvorfor det ikke virker???


Findes på www.brugtstyling.dk
Avatar billede jaw Nybegynder
15. september 2005 - 19:50 #1
Umiddelbart synes jeg du skal starte med at gøre 2 ting:

1. Fjern @ i denne linie og hiv mysql_error ud hvis den findes:
  $insert_ip = mysql_query("INSERT  INTO ips (`ip`) VALUES ('$user_ip')") or die(mysql_error());

2. Check indholdet af $user_ip. Evt med en simpel echo $user_ip;
Avatar billede stieper Nybegynder
15. september 2005 - 19:55 #2
Får denne fejlmeddelelse:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Avatar billede jaw Nybegynder
15. september 2005 - 19:58 #3
Så har du en fejl i din mysql-opsætning. Har den kørt på noget tidspunkt? Har du brugt andre scripts? Ellers så prøv at lave et ganske, ganske simpelt script, hvor du udhenter nogen enkelte data for at se om det virker.
Avatar billede stieper Nybegynder
15. september 2005 - 20:00 #4
Jeg kører et phpbb2 forum derpå - så det virker umiddelbart som det skal...?
Avatar billede jaw Nybegynder
15. september 2005 - 20:02 #5
Så undersøg dine connect-kommandoer:
$dbc = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD)or(die(mysql_error());
mysql_select_db('xxxxxxx')or(die(mysql_error());
Avatar billede stieper Nybegynder
15. september 2005 - 20:03 #6
I phpmyadmin står server som en ip-adresse som her:

Server: 195.128.xxx.xx  Database: xxxxxxxx  Tabel:

skal min host så sættes til det, eller skal den stadig være localhost?
Avatar billede jaw Nybegynder
15. september 2005 - 20:09 #7
Brug det samme som du bruger til din phpBB.
Avatar billede stieper Nybegynder
15. september 2005 - 20:42 #8
tak for hjælpen - tror det er ved at være sent for mig...

Der var "//" foran include_once("connect.php");

DOH!!!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester