webForumDet fria alternativet

Lite om sql injections/magic quotes/addslashes..

22 svar · 1 335 visningar · startad av Tulork · sida 2 av 2

colioneMedlem sedan juni 20014 421 inlägg
#21

Otestat, men borde funka:

function auth_check($group_access,$level_access) 
{ 

    $now = time(); 
    $user_timeout = $now-300; 

    if (LOG_ONLINE == 1) { 
        // Radera äldre än timeout_online 
        $query = ("DELETE FROM tracked_online WHERE user_logged < $user_timeout"); 
        mysql_query($query); 
    } 
     
    $db = DB::getInstance(); 
     
    //if ($group_access >= 2) { 
     
        if (isset($_SESSION['user_id'])) { 
             
            $upd_user_sql = "SELECT user_group, user_name, user_pm_unread FROM ".TBL_TRACKED_USERS." WHERE (user_id = :user ) AND (user_session = :session)"; 
             
			$bindArr = array("user"=>$_SESSION['user_id'],"session"=>session_id());
			
            if (USER_IP_CHECK == 1) { 
            $upd_user_sql .= " AND (user_ip = :ip )";
            $bindArr['ip']= $_SERVER['REMOTE_ADDR'];
            } 
             
            $stmt = $db->prepare($upd_user_sql); 
             
            $stmt->execute($bindArr); 
             
            if ($this_user = $stmt->fetchAll(PDO::FETCH_ASSOC)) { 
                 
                    if (empty($this_user['user_group']) || ($this_user['user_group'] < $group_access)) { 
                        msg_die("No access","You have no access to this page"); 
                    } 
                    define('USER_ID',$this_user['user_id']); 
                    define('USER_NAME',$this_user['user_name']); 
                    define('USER_PM_UNREAD',$this_user['user_pm_unread']); 
                 
            }
FuelMedlem sedan okt. 20001 285 inlägg
#22

Det är nog mkt möjligt att det gör, jag törs bara inte röra koden nu när det fungerar ;) tack för att du tog dig tid. Först så var jag eggad till tusen men när det inte alls fungerade så höll jag på att ge upp. Nu är det roligt igen ;)

$sql = "SELECT * FROM tabell WHERE aaaaa = :aaaaa AND bbbbb = :bbbbb";
$stmt = $db->prepare($sql);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->bindParam(':aaaaa', $aaaaa, PDO::PARAM_STR);
$stmt->bindParam(':bbbbb', $bbbbb, PDO::PARAM_STR, 12);
$stmt->execute();
	
if ($result = $stmt->fetchAll()) {
print_r($result);
}
FuelMedlem sedan okt. 20001 285 inlägg
#23

Alltså.... :(

om jag skriver $this_user = $stmt->fetch() istället för $this_user = $stmt->fetchAll() så får jag fel värden.. jag ska bara ha ut en rad men det blir cp

Ska jag alltid köra prepare ?

varför skriver en del direkt.. execute("SELECT... ?

Jag är allmänt förvirrad nu. Vill ha lite: så här är det ! så ska man göra!

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)