2.2 PHPbookmark中的文件列表
文件名
|
描述
|
bookmarks.sql
|
创建PHPbookmark的数据库SQL语句
|
login.php
|
包含系统登录表单的页面
|
register_form.php
|
系统中用户注册表单
|
register_new.php
|
处理新注册信息的脚本
|
forgot_form.php
|
用户忘记密码后需要填写的表单
|
forgot_passwd.php
|
重新设置遗忘密码的脚本
|
member.php
|
用户的主页面,包含该用户所有的当前书签
|
add_bm_form.php
|
添加书签的表单
|
add_bms.php
|
将书签真正添加到数据库中的脚本
|
delete_bms.php
|
从用户的书签列表中删除选定书签的脚本呢
|
recommend.php
|
基于用户以前的操作,推荐用户可能感兴趣的书签
|
change_passwd_form.php
|
用户修改密码时要填写的表单
|
change_passwd.php
|
修改数据库中用户密码的表单
|
logout.php
|
将用户注销的脚本
|
bookmark_fns.php
|
应用程序的包含文件集合
|
data_valid_fns.php
|
确认用户输入数据有效的函数
|
db_fns.php
|
连接数据库的函数
|
user_auth_fns.php
|
用户身份验证的函数
|
url_fns.php
|
增加和删除书签的函数
|
output_fns.php
|
以HTML形式格式化输出的函数
|
bookmark.gif
|
PHPbookmark的logo图标
|
3、实现数据库
create database bookmarks;use bookmarks;create table user (username varchar(16) primary key,passwd char(40) not null,email varchar(100) not null);create table bookmark (username varchar(16) not null,bm_URL varchar(255) not null,index (username),index (bm_URL));grant select, insert, update, deleteon bookmarks.*to bm_user@localhost identified by 'password';
4、实现基本的网站
4.1 login.php
<?php/** * @author switch * @copyright 2015 * 包含系统登录表单的页面 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php'); //应用程序的包含文件集合do_html_header(''); //HTML标题display_site_info();//HTML站点信息display_login_form();//HTML登录信息do_html_footer(); //HTML页脚?>
4.2 bookmark_fns.php
<?php/** * @author switch * @copyright 2015 * 应用程序的包含文件集合 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('data_valid_fns.php'); //确认用户输入数据有效的函数require_once('db_fns.php'); // 连接数据库的函数require_once('user_auth_fns.php'); //用户身份验证的函数require_once('output_fns.php'); //以HTML形式格式化输出的函数require_once('url_fns.php'); //增加和删除书签的函数?>
5、实现用户身份验证
5.1 register_form.php
<?php/** * @author switch * @copyright 2015 * 系统中用户注册表单 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');do_html_header('User Registration'); //HTML标题display_registeration_form(); //输出注册表单do_html_footer(); //HTML页脚?>
5.2 register_new.php
<?php/** * @author switch * @copyright 2015 * 处理新注册信息的脚本 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');//创建变量$email = $_POST['email'];$username = $_POST['username'];$passwd = $_POST['passwd'];$passwd2 = $_POST['passwd2'];//开启会话session_start();try{//检查表单是否填写满if(!filled_out($_POST)){throw new exception('You have not filled the form out correctly - please go back and try again.');}//检查邮件地址是否有效if(!valid_email($email)){throw new exception('That is not a vald email address. Please go back try again.');}//检查两次输入密码是否相同if($passwd != $passwd2){throw new exception('The passwords you entered do not match - please go back try again.');}//检查密码长度是否合格if((strlen($passwd) < 6) || (strlen($passwd) > 16)){throw new exception('Your password must be between 6 and 16 characters Please go back and try again.');}//尝试注册register($username,$email,$passwd);//注册会话变量$_SESSION['valid_user'] = $username;//提供成员页面链接do_html_header('Registration successful'); //HTML标题echo 'Your registration was successful.Go to the members page to start setting up your bookmarks!'; //输出URLdo_html_URL('member.php','Go to members page'); //HTML页脚do_html_footer(); //HTML页脚}catch(exception $e){do_html_header('Problem:');echo $e->getMessage();do_html_footer();exit;}?>
5.3 member.php
<?php/** * @author switch * @copyright 2015 * 用户的主页面,包含该用户所有的当前书签 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');session_start();//创建变量$username = @$_POST['username'];$passwd = @$_POST['passwd'];if($username && $passwd){try{login($username,$passwd);//如果该用户在数据库中,则注册会话变量$_SESSION['valid_user'] = $username;}catch(exception $e){//登录不成功do_html_header('Problem:');echo 'You could not be logged in. You must be logged in to view this page.';do_html_URL('login.php','Login');do_html_footer();exit;}}do_html_header('Home');check_valid_user();//获取用户的书签if($url_array = get_user_urls($_SESSION['valid_user']))display_user_urls($url_array);//获取用户菜单选项display_user_menu();do_html_footer();?>
5.4 logout.php
<?php/** * @author switch * @copyright 2015 * 将用户注销的脚本 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');session_start();$old_user = $_SESSION['valid_user'];//注销会话变量unset($_SESSION['valid_user']);$result_dest = session_destroy();do_html_header('Logging Out');if(!empty($old_user)){if($result_dest) //登出成功{echo 'Logged out.<br />';do_html_URL('login.php','Login');}else //不成功{echo 'Could not log you out.<br />';}}else{echo 'You were not logged in, and so have not been logged ot.<br />';do_html_URL('login.php','Login');}do_html_footer();?>
5.5 change_passwd.php
<?php/** * @author switch * @copyright 2015 * 修改数据库中用户密码的表单 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');session_start();do_html_header('Changing password');//创建变量$old_passwd = $_POST['old_passwd'];$new_passwd = $_POST['new_passwd'];$new_passwd2 = $_POST['new_passwd2'];try{check_valid_user();if(!filled_out($_POST))throw new exception('You have not filled out the form completely.Please try again.');if($new_passwd != $new_passwd2)throw new exception('Passwords entered were not the same. Not changed.');if((strlen($new_passwd) > 16) || (strlen($new_passwd) < 6)){throw new exception('New password must be between 6 and 16 characters. Try again.');}//尝试修改change_password($_SESSION['valid_user'],$old_passwd,$new_passwd);echo 'Password changed.';}catch(exception $e){echo $e ->getMessage();}display_user_menu();do_html_footer();?>
5.6 forgot_paswd.php
<?php/** * @author switch * @copyright 2015 * 重新设置遗忘密码的脚本 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');do_html_header("Resetting password");//创建变量$username = $_POST['username'];try{$passwd = reset_password($username);notify_password($username,$passwd);echo 'Your new password has been emailed to you.<br />';}catch(exception $e){echo 'Your password could not be reset - please try again later.';}do_html_URL('login.php','Login');do_html_footer();?>
6、实现书签的存储和检索
6.1 add_bms.php
<?php/** * @author switch * @copyright 2015 * 添加书签的表单 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');session_start();//创建变量$new_url = $_POST['new_url'];do_html_header('Adding bookmarks');try{check_valid_user(); //检查用户有效性if(!filled_out($new_url)) //检查表单是否填写throw new exception('Form not completely filled out.');if(strstr($new_url,'http://') === false)$new_url = 'http://'. $new_url;if(!(@fopen($new_url,'r'))) //可以调用fopen()函数打开URL,如果能打开这个文件,则假定URL是有效的throw new exception('Not a valid URL.');add_bm($new_url); //将URL添加到数据库中echo 'Bookmark added.';if($url_array = get_user_urls($_SESSION['valid_user']))display_user_urls($url_array);}catch(exception $e){echo $e ->getMessage();}display_user_menu();do_html_footer();?>
6.2 delete_bms.php
<?php/** * @author switch * @copyright 2015 * 从用户的书签列表中删除选定书签的脚本呢 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');session_start();//创建变量$del_me = @$_POST['del_me'];$valid_user = $_SESSION['valid_user'];do_html_header('Deleting bookmarks');check_valid_user();if(!filled_out($del_me)) //{echo '<p>You have not chosen any bookmarks to delete.<br />Please try again.</p>';display_user_menu();do_html_footer();exit;}else{if(count($del_me) > 0){foreach($del_me as $url){if(delete_bm($valid_user,$url)){echo 'Deleted '. htmlspecialchars($url) .'.<br />';}else{echo 'Could not delete '. htmlspecialchars($url) .'.<br />';}}}else{echo 'No bookmarks selected for deletion';}}if($url_array = get_user_urls($valid_user)){display_user_urls($url_array);}display_user_menu();do_html_footer();?>
6.3 recommend.php
<?php/** * @author switch * @copyright 2015 * 基于用户以前的操作,推荐用户可能感兴趣的书签 *///require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。require_once('bookmark_fns.php');session_start();do_html_header('Recommending URLs');try{check_valid_user();$urls = recommend_urls($_SESSION['valid_user']);display_recommended_urls($urls);}catch(exception $e){echo $e ->getMessage();}display_user_menu();do_html_footer();?>
7、源代码
这是
一个
网址收藏工具,可以作为浏览器
书签
的增补工具,方便跨浏览器和移动端的访问。
目前主要支持:网址分组、二维码预览、浏览器工具、移动版等功能。
一方面,鉴于安全或隐私的考虑;另一方面也鉴于我无法提供等同商业公司所能提供的服务,所以提供此单用户版本,与官方版本的区别如下:
* 官方使用第三方账号登录,单用户版使用本地账号登录,且无多用户支持
* 官方提供Firefox(火狐浏览器)Android版扩展,单用户版因部署环境未知,无法提供。如有需要请自行下载官方提供扩展自行修改
另外,本
系统
使用 [MIT](http://opensource.org/licenses/mit-license.
php
) 协议进行授权。
* nginx/apache
*
php
(版本:5.3+;扩展:mysql,curl,gd)
* mysql
* 导入`sql/init.sql`到数据库
* 修改目录`tpl_c`,`log`,`cache`权限为可写(777)
* 修改配置文件`config.
php
`,主要修改数据库及用户配置信息
* 上传代码到服务器空间
2014-07-17
修改分类分页浏览问题
2014-06-26
修正“
书签
导入”因
书签
记录行过长而无法导入问题
css3 - 带有一些 LESS Magic 的花式媒体查询_css3_帮酷编程问答
Jeet Grid
系统
| 智能 CSS 预处理器网格
clubmate.fi – 关于 CSS & Sass & WordPress
为 CSS 注入新生命的 25 个专业技巧 | 网页设计 | 创意博客
防止长 URL 脱离容器 | CSS 技巧
背面可见性| CSS 技巧
在 CSS 和 SVG 中剪辑 - <code>clip-path</code> 属性和 <code><clipPath></co
这是
一个
网址收藏工具,可以作为浏览器
书签
的增补工具,方便跨浏览器和移动端的访问。
目前主要支持:网址分组、二维码预览、浏览器工具、移动版等功能。
一方面,鉴于安全或隐私的考虑;另一方面也鉴于我无法提供等同商业公司所能提供的服务,所以提供此单用户版本,与官方版本的区别如下:
* 官方使用第三方账号登录,单用户版使用本地账号登录,且无多用户支持
* 官方提供Firefox(火狐浏览器)Android版扩展,单用户版因部署环境未知,无法提供。如有需要请自行下载官方提供扩展自行修改
另外,本
系统
使用 [MIT](http://opensource.org/licenses/mit-license.
php
) 协议进行授权。
基础环境
* nginx/apache
*
php
(版本:5.3+;扩展:mysql,curl,gd)
* mysql
安装说明
* 导入`sql/init.sql`到数据库
* 修改目录`tpl_c`,`log`,`cache`权限为可写(777)
* 修改配置文件`config.
php
`,主要修改数据库及用户配置信息
* 上传代码到服务器空间
2014-07-17
修改分类分页浏览问题
2014-06-26
修正“
书签
导入”因
书签
记录行过长而无法导入问题
Omarker 允许用户在应用程序上添加他们喜欢的链接,并通过文本搜索快速检索这些链接。
Omarker 将抓取目标网站的元数据,并将其存储在数据库中以备将来搜索。 如果元不存在,它会抓取标题、元和第一段。
Omarker 使用的搜索技术利用了 PG 的内置搜索功能。 这包括英文词典中的全文搜索、双元音位搜索和三元组(模糊)搜索。
Omarker 使用现代地铁风格,从抓取的网站上拍摄的照片在网格上布置为砖块。 它还具有无休止的滚动功能。 以下是网络应用程序的屏幕截图:
这是移动视图:
:网页抓取
:在 Ruby 语言中公开 PG 的搜索功能。
:用于网格布局的 JS 库
: Rails 和 Masonry 的附加库
require_once('output_fns.
php
');
require_once('control_db.
php
');
require_once('check_form.
php
');
require_once('print_mark.
php
');
output_fns.
php
<?
php
require_once('ou
本文为大家分享了
PHP
在线
书签
系统
,感兴趣的小伙伴们可以参考一下1、需求分析首先,需要识别每个用户。应该有验证机制。其次,需要保存单个用户的
书签
。用户应该能够添加和删除
书签
。再次,需要根据对他们的了解,向用户建议他们可能感兴趣的站点。2、解决方案2.1
系统
流程图2.2
PHP
bookmark中的文件列表3、实现数据库create database bookmarks;use bookmarks;...
php
打印数组内容This is a pretty common task, but it’s surprising how many
PHP
newbies don’t know about it yet. If you want to see the structure of your
PHP
Array, all you need to do is this:
这是
一个
非常普通的任务,但...