我如何显示网址

时间:2015-02-10 07:11:56

标签: php mysql

我有一个网站,人们可以点击名称,然后重定向到相应的URL

id  |  name     |  url
1   |  facebook |  www.fb.com

我想要显示1,200,000,023 URL。登录用户未访问的URLs。 我的注册信息存储在userdb.php中,如下所示:

1|username|a84894gf5sag4f684gh68fh45g|email@gmail.com|NA

我的display.php



<?php

mysql_connect('mysql', '1', 'Py');
mysql_select_db('a5803761_add');
$query =mysql_query('select * from addimage order by ID DESC');


while( $row = mysql_fetch_assoc($query) )
{

echo '<div style="min-width:300px;height:100px;border:red 5px;float:left;"><a href="'.$row['url'].'">'.$row['name'].'</a></div>';
}

?>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

首先,您必须存储哪个用户已访问过哪个网址。这个表应该有这样的结构:

CREATE TABLE VISITED(ID INT AUTO_INCREMENT,
USER_ID INT,
URL_ID INT,
PRIMARY KEY(ID),
KEY(USER_ID),
KEY(URL_ID));

然后你必须解释用户点击存储,如果他们访问网址(可能使用jQuery,并使用AJAX发回)或使用重定向PHP记录点击的网址,然后将用户重定向到此。< / p>

如果你考虑第二个,这个PHP应该是:

<?php
    //You should check here for the URL to be an integer
    $res = mysql_query('SELECT url FROM addimage WHERE id='.$url_id.';');
    if (mysql_num_rows($res)>0) {
        mysql_query('INSERT INTO VISITED VALUES(NULL,'.$_SESSION['logged_in_user_id'].','.$url_id.');');
        $row = mysql_fetch_array($res);
        Header('Location: http://'.$row[0]);
    }
?>

之后,当您列出网址时,您必须检查用户尚未访问的网址:

<?php

mysql_connect('mysql', '1', 'Py');
mysql_select_db('a5803761_add');
$sql  = 'select addimage.id, addimage.name, VISITED.USER_ID from addimage ';
$sql .= 'LEFT JOIN VISITED ON (addimage.id = VISITED.URL_ID) ';
$sql .= 'WHERE (VISITED.USER_ID='.$_SESSION['logged_in_user_id'].');';
$query =mysql_query('order by ID DESC');


while( $row = mysql_fetch_assoc($query) )
{
  if ($row[2] == 'NULL') {
    echo '<div style="min-width:300px;height:100px;border:red 5px;float:left;"><a href="/redirecter.php?url_id='.$row['id'].'">'.$row['name'].'</a></div>';
  }
}

?>

但我认为在一个HTML中列出这么多网址并不是一个好主意,可能浏览器会占用所有内存。也许你应该做某种过滤器或分页机制。

请将此代码仅作为示例,并根据您的需要进行修改。

另一方面,正如其他人所建议的那样,不要使用mysql_扩展,使用mysqli或PDO。

答案 1 :(得分:0)

我建议您使用mysqliPDO。哦,写&#34; http://&#34;进入链接。

相关问题