2011-01-09 133 views
0

我試圖設置此代碼加載的隨機鏈接,但我有一個問題:隨機鏈接PHP

$links = file('myfile.txt'); 
$rand_link = $links[ mt_rand(0, count($links) - 1) ]; 
echo '<div class="link"><a href="' . $rand_link . '"><img src="button.png" border="0"></a></div>'; 

它有時會顯示它前面顯示的頁面。我希望它記住它顯示的網站,並且不要再顯示它,直到用戶從頭開始。非常感謝您的幫助。

+0

你忘了顯示的代碼。 – 2011-01-09 08:40:52

+0

我無法在其中嵌入代碼,但它看起來像這樣。 $ links = file('myfile.txt'); $ rand_link = $ links [mt_rand(0,count($ links) - 1)]; echo'

'; – Truthworthy 2011-01-09 08:41:39

回答

2

終於擁有多個站點的增強版本歷史

// Predefinitions 
$links = file('myfile.txt'); 
$currentPage = $_SERVER['PHP_SELF']; 

// make sure links are pure and no whitespaces are left 
foreach ($links as &$link) 
{ 
    $link = trim($link); 
} 

// prepare for history 
if (! array_key_exists('visited_links', $_SESSION)) 
{ 
    $_SESSION['visited_links'] = array(); 
} 
// add current site to visited links if it wasnt visited earlier 
if (! in_array($currentPage, $_SESSION['visited_links'])) 
{ 
    $_SESSION['visited_links'][] = $currentPage; 
} 

// get all those links which weren't visited yet kinda $links = $allLinks - $visitedLinks 
$potentialLinks = array_diff($links, $_SESSION['visited_links']); 

$randomLinkId = mt_rand(0, count($potentialLinks)-1); 
$randomLinkIds = array_keys($potentialLinks); 
$randomLink = $potentialLinks[$randomLinkIds[$randomLinkId]]; 


echo '<div class="link"><a href="'.$randomLink.'"><img src="button.png" border="0"></a></div>'; 

可能有潛在的錯誤如果您$_SERVER['PHP_SELF']鏈表的格式,這不同,你可以用一些快速var_dumps評估此。 據我所知WordPress的自動啓動會話,這應該解釋你的錯誤消息。該腳本假定會話已經啓動。

+0

不幸的是我很初學。你能幫助實施嗎? – Truthworthy 2011-01-09 10:58:30

0

試試這個代碼。可能是錯誤,我沒有在服務器上測試過。我使用會話來保存已查看的頁面。

$links = file('myfile.txt'); 
$show_links = array(); 

session_start(); 

if($_SESSION['show_links']) 
foreach($_SESSION['show_links'] as $key=>$value){ 
    $show_links[$key] = $value; 
} 

$random_link_number = mt_rand(0, count($links) - 1); 

if(count($show_links) != count($links)){ 
while( !in_array($random_link_number, $show_links) ){ 
    $random_link_number = mt_rand(0, count($links) - 1); 
} 
} 
else{ 
    unset($show_links); 
} 

$show_links[] = $random_link_number; 
$_SESSION['show_links'] = $show_links; 

$rand_link = $links[ $random_link_number ];