Kezdőoldal » Számítástechnika » Weblapkészítés » Mi a baj ezzel a PHP-val?

Mi a baj ezzel a PHP-val?

Figyelt kérdés
Regisztráltaknak akarok egy statisztikát de valamiért nem adja a táblához hozzá a dolgokat. Kommentben a kód:

2014. ápr. 6. 09:08
 1/4 A kérdező kommentje:

<?

/* Stat */

require_once ("reg.config.php");


if(strlen($HTTP_X_FORWARDED_FOR)){

$ip = getenv("HTTP_X_FORWARDED_FOR");

}else{

$ip = getenv("REMOTE_ADDR");

}


$user_a = $_SERVER['HTTP_USER_AGENT'];

$t = time();

$tm= time()+$_CONF['ONL_TIME'];


$sql = "DELETE FROM ".$_CONF['ONLINE']." WHERE time<".$t." AND User = '".$user."'";

mysqli_query($con,$sql) ;


$sql = "SELECT * FROM ".$_CONF['ONLINE']." WHERE ip='".$ip."' AND user_a='".$user_a."' AND User = '".$user."'";

$a = mysqli_query($con,$sql);

$er = mysqli_fetch_array($a);


if( mysqli_num_rows($a) == 0 ){

$sql = "INSERT INTO ".$_CONF['ONLINE']."(User,time,ip,user_a) VALUES ('".$user."','".$tm."','".$ip."','".$user_a."')";

mysqli_query($con,$sql);

}else{

$sql = "UPDATE ".$_CONF['ONLINE']." SET time='".$tm."' WHERE ip='".$ip."' AND user_a='".$user_a."' AND User = '".$user."'";

mysqli_query($con,$sql);

}


$sql = "SELECT COUNT(*) FROM ".$_CONF['ONLINE']." WHERE User = '".$user."'";

$online = array_shift(mysqli_fetch_row(mysqli_query($con,$sql)));


$time = time();


$sql = "SELECT * FROM Users_stat LIMIT 1";

$er = mysqli_fetch_array(mysqli_query($con,$sql));



$ma = date("d");

$ho = date("m");



$nap = $er['nap'];

$honap = $er['honap'];


$mai_lat = $er['mai_lat'];

$havi_lat = $er['havi_lat'];

$osszes_lat = $er['osszes_lat'];


$utso_lat = date($datef,$er['utso_lat']);


$mai_let = $er['mai_let'];

$havi_let = $er['havi_let'];

$osszes_let = $er['osszes_let'];


$online_r = $er['online_r'];


$osszes_let++;


if(isset($_SESSION['lat']) && $_SESSION['lat']=='ok'){

$lat = true;

}else{

$osszes_lat++;

}

if($ma != $nap){


if($ho != $honap){


$sql = "UPDATE ".$_CONF['STAT']." SET nap='".$ma."', honap='".$ho."', havi_lat='1', havi_let='1', mai_lat='1', mai_let='1',osszes_lat='".$osszes_lat."', osszes_let='".$osszes_let."', utso_lat='".$time."' LIMIT 1 WHERE User = '".$user."'";

mysqli_query($con,$sql);


$havi_lat = 1;

$havi_let = 1;

if(!$lat) $_SESSION['lat'] = 'ok';

}else{


if(!$lat){

$havi_lat++;

$_SESSION['lat'] = 'ok';

}

$havi_let++;


$sql = "UPDATE ".$_CONF['STAT']." SET nap='".$ma."', mai_lat='1', mai_let='1', havi_lat='".$havi_lat."', havi_let='".$havi_let."', osszes_lat='".$osszes_lat."', osszes_let='".$osszes_let."', utso_lat='".$time."' LIMIT 1 WHERE User = '".$user."'";

mysqli_query($con,$sql);


}


$mai_lat = 1;

$mai_let = 1;


}else{

if(!$lat){

$mai_lat++;

$havi_lat++;

$_SESSION['lat'] = 'ok';

}


$havi_let++;

$mai_let++;


$sql = "UPDATE ".$_CONF['STAT']." SET mai_lat='". $mai_lat ."', mai_let='". $mai_let ."', havi_lat='".$havi_lat."', havi_let='".$havi_let."', osszes_lat='".$osszes_lat."', osszes_let='".$osszes_let."', utso_lat='".$time."' LIMIT 1 WHERE User = '".$user."'";

mysqli_query($con,$sql);


}


if($online > $online_r){

$sql = "UPDATE ".$_CONF['STAT']." SET online_r='".$online."' LIMIT 1 WHERE User = '".$user."'";

mysqli_query($con,$sql);

$online = $online." <font color='#FF0000'>REKORD!!!</font>";

$online_r = $online;

}


$date = date($datef);


/* Stat */

?>

Szóval mi a hiba, hogy nem ad hozzá?

A reg.config.php adatai:

<?php


$_CONF['STAT'] = "Users_stat";

$_CONF['ONLINE'] = "Users_online";

$_CONF['ONL_TIME'] = "300";


$datef = "Y/m/d H:i";

?>

Remélem tudtok segíteni!

Köszi!

2014. ápr. 6. 09:10
 2/4 anonim ***** válasza:

Az hogy tele van SQL Injectionnal..

Minden felhasználótól származó értéket escapelni kell,( mert ha nem, simán fel lehet törni az oldalt) mielőtt MySQL lekérésbe rakod, így:

mysqli_real_escape_string($con, $user);

Az user-agent is ilyen, mert a böngésző bármit elküldhet.

Viszont nem látom hogy hol csatlakozik az adatbázishoz a mysqli_connect függvénnyel...

[link]

2014. ápr. 6. 09:41
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
És ha sessionokat akarsz használni akkor be kell hívd a session_start(); ot! Valamelyik szerveren nem, de akkor is ajánlott megtenni.
2014. ápr. 6. 09:46
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:
Ja és a mysqli_query(...); legyen mysqli_query(...) or die(mysqli_error($con)); és írd ki ide ha ír hibát.
2014. ápr. 6. 10:07
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!