Gå til innhold

php/mysql logge script (løst)


Anbefalte innlegg

Skrevet (endret)

Hei. Nedenfor har jeg et loggesystem som registrerer ipadresser, nettlesere og dato. Scriptet ekskluderer å logge ipadresser som allerede er registert.

 

Jeg ønsker derimot at det kun skal ekskludere sist besøkte ipadresse.

Tidligere registrerte ipadresser skal ikke registreres på nytt, men kun oppdateres (i forhold til besøkstidspunkt).

 

Håper dette var forståelig. Noen som kan hjelpe med dette ?

 

<?
include("connect.php");

$ip=$_SERVER['REMOTE_ADDR'];
$browser=$_SERVER['HTTP_USER_AGENT'];
$date = date('r');

$ip_exists_check = "SELECT * from $table WHERE ip='$ip'";
$query=mysql_query($ip_exists_check);
$check=mysql_fetch_row($query);

if($check) {
}

else {
$sql_query = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')";
$result = mysql_query($sql_query);
}

$sql_result = mysql_query("SELECT * FROM $table");
$loop = mysql_num_rows($sql_result);
echo "$loop hits";
?>

Endret av christdi
Videoannonse
Annonse
Skrevet (endret)

Slik:

 

$sql_query = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date') WHERE ip != '$ip'";

 

?

 

EDIT: Så ikke at du også ville oppdatere hvis IP-adressen var registrert før. Kommer tilbake!

 

MVH Audun

Endret av audunr
Skrevet

Det du må gjøre er å kjøre en SELECT for å sjekke om IP-adressen er lagt inn før. Dersom den ikke er det, kjør en INSERT. Dersom den er det, kjør en UPDATE. Si fra om du trenger mer hjelp.

 

MVH Audun

Skrevet (endret)

Jeg har prøvd følgende, men datoen blir ikke oppdatert :

 

<?
include("connect.php");

$ip=$_SERVER['REMOTE_ADDR'];
$browser=$_SERVER['HTTP_USER_AGENT'];
$date = date('r');

$ip_exists_check = "SELECT * from $table WHERE ip='$ip'";
$query=mysql_query($ip_exists_check);
$check=mysql_fetch_row($query);

if($check) {
$sql_update = "UPDATE $table SET browser='$browser',ip='$ip',date='$date' WHERE id='$id'";
$do_update = mysql_query($sql_update);
}

else {
$sql_insert = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')";
$do_insert = mysql_query($sql_insert);
}

$sql_result = mysql_query("SELECT * FROM $table");
$loop = mysql_num_rows($sql_result);
echo "$loop hits | ";
?>

Endret av christdi
Skrevet

ser ut som om du må bruke $check[id] og ikke $id.

Forøvrig vil jeg anbefaler å bruke mysql_num_rows() til å sjekke om den henter ut noe data istedenfor bare $check.

Skrevet

Prøv denne:

<?
include("connect.php");

$ip=$_SERVER['REMOTE_ADDR'];
$browser=$_SERVER['HTTP_USER_AGENT'];
$date = date('r');

$ip_exists_check = "SELECT * from $table WHERE ip='$ip'";
$query=mysql_query($ip_exists_check);
$check2=mysql_fetch_row($query);
$check=mysql_num_rows($query);
$id=$check2['id'];

if($check) {
$sql_update = "UPDATE $table SET browser='$browser',ip='$ip',date='$date' WHERE id='$id'";
$do_update = mysql_query($sql_update);
}

else {
$sql_insert = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')";
$do_insert = mysql_query($sql_insert);
}

$sql_result = mysql_query("SELECT * FROM $table");
$loop = mysql_num_rows($sql_result);
echo "$loop hits | ";
?>

Skrevet (endret)

Tusen takk for alle forslag, men det fungerer desverre fremdeles ikke.

 

Som nevnt prøver jeg med skriptet å logge alle nye ipadresser.

Ipadresser som allerede finnes i tabellen skal kun oppdateres med ny dato.

Ikke legges til som ny post.

Endret av christdi
Skrevet
<?
include("connect.php");

$ip=$_SERVER['REMOTE_ADDR'];
$browser=$_SERVER['HTTP_USER_AGENT'];
$date = date('r');

$ip_exists_check = "SELECT * from $table WHERE ip='$ip'";
$query=mysql_query($ip_exists_check);
$check=mysql_fetch_row($query);

if(mysql_num_rows($check)) {
$sql_update = "UPDATE $table SET browser='$browser',date='$date' WHERE ip='$ip'";
$do_update = mysql_query($sql_update);
}

else {
$sql_insert = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')";
$do_insert = mysql_query($sql_insert);
}

$sql_result = mysql_query("SELECT * FROM $table");
$loop = mysql_num_rows($sql_result);
echo "$loop hits | ";
?>

Skrevet

en enkel løsning på dette er vel å definere en unique index på ip-adresse (tillater bare unike ipadresser) og bruke REPLACE, og sette inn ny ip med dato.

 

replace vil overskrive de rader som bryter med unique keys, og vil uansett sette inn seneste dato

Skrevet

dvs slik:

 

først i pypmyadmin eller mysql shell:

alter table TABELLNAVN add unique index unikip(ip)

 

sett inn riktig tabellnavn for TABELLNAVN

 

deretter phpkoden:

 

<?
include("connect.php");

$ip=$_SERVER['REMOTE_ADDR'];
$browser=$_SERVER['HTTP_USER_AGENT'];
$date = date('r');

mysql_query("REPLACE into $table set ip='$ip',date='$date',browser='$browser'") or die("server did poo-poo: " . mysql_query());

$sql_result = mysql_query("SELECT * FROM $table");
$loop = mysql_num_rows($sql_result);
echo "$loop hits";
?>

Skrevet

Takk for alle gode forslag. Jeg har derimot funnet en løsning på det.

Se nedenfor :

 

 

<?
include("connect.php");

$ip=$_SERVER['REMOTE_ADDR'];
$browser=$_SERVER['HTTP_USER_AGENT'];
$date = date('Y.m.d - H:i:s');

$ip_exists_check = "SELECT * from $table WHERE ip='$ip'";
$query=mysql_query($ip_exists_check);
$check=mysql_fetch_assoc($query);

if($check) {
$sql_update = "UPDATE $table SET browser='$browser',ip='$ip',date='$date' WHERE id='{$check[id]}'";
$do_update = mysql_query($sql_update);
}

else {
$sql_insert = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')";
$do_insert = mysql_query($sql_insert);
}

$sql_hent_ut = mysql_query("SELECT * FROM $table");
$loop = mysql_num_rows($sql_hent_ut);
echo $loop." treff";
?>

Skrevet

avslutngingsvis vil jeg være grinebiter og si at mitt forslag gir mest mening logisk sett - den overskriver hele raden uansett hva den måtte inneholde, med ny ip og alt annet. men har du noe som funker, så ok.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...