2011-04-29 91 views
0

嘿! 我很久以前就買下了我的網站..我的網站是一個類似Facebook的網站,人們可以添加他們自己的網站或其他網站。 我曾考慮添加登錄系統,以便用戶可以使用他們的用戶名進行發佈,並使其更容易進行發佈喜歡的比賽。 我已經有系統本身 - 使用此http://www.evolt.org/node/60384添加登錄系統

我試圖在進程文件中添加一個選項,當會話是'登錄'代碼檢索用戶名,在所有其他情況下,'匿名'。

問題是,它不工作:(

的代碼是:

$today = date("Ymdhis"); 
    $rand = $today.mt_rand().mt_rand().mt_rand(); 
    $count = '0'; 
    $type = 'picture'; 
    $username = '<? if($session->logged_in){ echo "$session->username" } else { echo "Anonymous" } ?>'; 
    $sql = "INSERT INTO `like` (`rand`, `like`, `count`, `created`, `youtube`, `type`,`username`) VALUES ('$rand', '$like', 0, '$today', '$string', '$type', '$username')"; 

我首先定義$的用戶名,然後「告訴」腳本將$的用戶名進入它的領域。

的問題是,當我嘗試這在實時, 字段示出了實際的代碼; <? if($session->logged_in){ echo "$session->username" } else { echo "Anonymous" } ?>代替的期望輸出

另外,我在過程文檔的開始部分中包含了用於登錄的session.php。

我與其他所有文件一起使用的session.php可在http://www.evolt.org/node/60384下載,無需下載。

PS我用$用戶名密碼使用主網頁上輸出登錄後的用戶名。我添加了「無名氏」的部分自己..這可能導致其無法正常工作..

+0

你給了正確的代碼*和*的的網址您網站...這是有風險的,主要是因爲根據你的'session'類,你可能會暴露於代碼/ sql注入。 – 2011-04-29 15:04:58

+0

隨着SQL查詢被放在一起的方式,它看起來像用戶輸入直接進入它。您需要使用[綁定參數](http://bobby-tables.com/php.html)來防範SQL注入攻擊。 – Schwartzie 2011-04-29 15:06:36

+0

哇......「問題不起作用:(」對於每個有代碼的問題都是這麼說的。 – 2011-04-29 15:07:18

回答

2

你發佈的代碼是PHP,但是在解析之後會被放到你的身邊。所以它永遠不會'運行'。

除非你使用某種類型的模板系統來解析你的代碼兩次,你是不是這個意思?

if($session->logged_in){ 
     $username = $session->username; 
} else { 
     $username = "Anonymous" ; 
} 
0

$的用戶名是一個包含字符串的變量:

$username = '<? if($session->logged_in){ echo "$session->username" } else { echo "Anonymous" } ?>'; 

一切是在引號是一個字符串,而不是PHP代碼。 它不會被執行。

你需要做這樣的事情:

if($session->logged_in){ 
    $username = $session->username; 
} else { 
    $username = "Anonymous"; 
} 
0

變化

$username = '<? if($session->logged_in){ echo "$session->username" } else { echo "Anonymous" } ?>';

if($session->logged_in) $username = $session->username; else $username = "Anonymous"