2011-08-16 95 views
0

我不是在這裏要求任何人爲我做這項工作,我只是需要一個點在正確的方向,因爲我似乎保持回溯。 =) 所以我的問題是這樣的:Php輸入檢查一個文件

在網站上,我有4個捐贈津貼「盒子」(有人將作爲感謝捐贈的津貼名單)。現在,我在頂部輸入一個輸入表單,一個用戶可以鍵入他們的姓名,如果userx之前已經捐贈過,但想要檢查他可以獲得的更好的福利,他會輸入他的名字,然後顯示只能像方框3和4一樣。

方框1-4 = VIP,SuperVIP,EliteVIP,EliteModerator。

形式應覈對包含所有名稱/津貼的包的單個文件,它已經格式化很好地這樣的:

hvv7: 
subgroups: [] 
permissions: [] 
group: SuperVip 
TEAR_GAS_TEDDY: 
subgroups: [] 
permissions: [] 
group: EliteVip 
KMoore11: 
subgroups: [] 
permissions: [] 
group: SuperVip 
EanEuropean: 
subgroups: [] 
permissions: [] 
group: Moderator 
powerwind: 
subgroups: [] 
permissions: [] 
group: Vip 

再說,我真的只需要在正確的方向推,但任何幫助/答案將不勝感激。我今天在這裏的原因是因爲,我知道有幾種方法來檢查這個詞,但是讓我感到困惑的是檢查這個詞,然後讓信息3行下來,然後返回,然後改變一些div的visibily(隱藏那些userx已經有了)

編輯: 嗯,仍然在研究,我想知道是否會更容易只獲取名稱/組到mysql中,然後讓腳本剛剛讀取,而不是哈哈。

+0

是否有必要將數據存儲在平坦的,人類可讀的文件中,因此每次讀取/更改某些數據時都必須手動分析它?如果你沒有訪問數據庫的願望,你可能會對[serialize()](http://php.net/manual/en/function.serialize.php)感興趣。至於更新頁面 - 你想通過AJAX或重新加載頁面來做到這一點? – DaveRandom

+0

@DaveRandom我希望我能夠改變它的存儲方式。遊戲服務器像這樣保存文件,然後像使用「userx擁有VIP,加載某些命令/特權」一樣使用它。此外,我正在考慮去ajax,這樣,連接速度較慢的人不必重新加載,並且表單仍應保留這些信息。 – DreamPhreak

+0

有很多代碼需要寫在這裏,但基本上你需要的是:一個解析文件和讀取某些數據的PHP過程,以及一個JS過程將用戶名傳回服務器並獲取當前級別,然後更新用戶頁面上的顯示。我真的不能真正給你一個很大的推動,而沒有爲你寫一些它... – DaveRandom

回答

1

使用正則表達式從用戶名的偏移量抓住該用戶名下的第一個組。像這樣:

$data = file_get_contents("file.txt"); 
$username = "hvv7"; // Example username 
$offset = stripos($data, $username); 
$group = "";  

if(preg_match("/group:([ A-Z0-9]+)/i", $data, $matches, PREG_OFFSET_CAPTURE, $offset)) 
{ 
    $group = $matches[1][0]; 
} 

echo $group; // Something like Vip 
0
$content = get_file_contents('file.txt'); 
$content = explode("\n",$content);//split by line... 
$group = $content[3];// returns "group: SuperVip" 

// 3是索引號碼。 或東西在這些線路相似......不知道是否爆炸會工作,但嘿,給它一個去:)

0

您可以使用JSON格式爲您的文件。使用json_encodejson_decode函數,您可以輕鬆讀取,修改和編寫您的數據結構。

例如,可以有一個這樣的陣列:

$data = array(
    "hvy7" => array(
     "subgroups" => array(), 
     "permissions" => array(), 
     "group" => "SuperVip" 
    ), 
    "TEAR_GAS_TEDDY" => array(
     "subgroups" => array(), 
     "permissions" => array(), 
     "group" => "EliteVIP" 
    ) 
); 

當然這不是數據結構的一個很好的例子。但我認爲你會明白這一點。你可以像普通的php對象那樣訪問它們。比您可以導出爲JSON格式。

0

的線索是在名稱 - DATA基地。

PHP沒有管理對平面文件數據的併發訪問所需的文件鎖定鎖定語義。這是在開始考慮在文件中尋找並解析其結構的複雜性之前。

使用數據庫。

0

使用其他答案以獲取主持人的類型。在頁面上的jQuery的方面,我會把所有的名字在陣列中的層次結構的順序,以便

var groups = ["Vip","Moderator","SuperVip","EliteVip","EliteModerator"]; 

然後說你的變量是

var usergroup = "whatevertheuserGroupYouGetFromPHP"; 

var index = groups.indexOf(usergroup); 

var tempGroups = groups; 

tempGroups.splice(0,index); 

$.each(tempGroups,function(index,value) { 
     $("#" + value).show(); 
}); 

,使所有烏爾箱CSS是最初有顯示:無;

並且還爲它們分配與組名匹配的ID。這應該工作