博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP之用户验证和标签推荐的简单使用
阅读量:6078 次
发布时间:2019-06-20

本文共 12616 字,大约阅读时间需要 42 分钟。

本篇主要是讲解一些最简单的验证知识

效果图

637318-20161029165903109-1434646904.gif

bookmark_fns.php

data_valid_fns.php

$value) { if ((!isset($key)) || ($value == '')) { return false; } } return true;}// Valid emailfunction valid_email($address) { if (ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $address)) { return true; }else { return false; }}?>

db_fns.php

user_auth_fns.php

query("select * from user where username = '".$username."'"); if (!$results) { throw new Exception("Could not execute query", 1); } if ($results -> num_rows > 0) { throw new Exception("That username is taken - go back and choose another one.", 1); } $results = $conn -> query("insert into user values ('".$username."', sha1('".$email."'), '".$password."')"); if (!$results) { throw new Exception('Could not register you in database - please try again later.'); } return true;}// Log in function login($username, $password) { $conn = db_connect(); $results = $conn -> query("select * from user where username = '".$username."' and passwd = sha1('".$password."')"); if (!$results) { throw new Exception('Could not log you in.'); } if ($results -> num_rows > 0) { return true; }else { throw new Exception('Could not log you in.'); }}// Check valid user function check_valid_user() { if (isset($_SESSION['valid_user'])) { echo "Logged in as ".$_SESSION['valid_user'].".
"; }else { do_html_header('Problem:'); echo "You are not logged in.
"; do_html_url('login.php', 'Login'); do_html_foot(); exit; }}// change password function change_password($username, $old_password, $new_password) { login($username, $old_password); $conn = db_connect(); $result = $conn -> query("update user set passwd = sha1('".$new_password."') where username = '".$username."'"); if (!$result) { throw new Exception('Password could not be changed.'); } else { return true; // changed successfully }}function get_random_word($min_length, $max_length) {// grab a random word from dictionary between the two lengths// and return it // generate a random word $word = ''; // remember to change this path to suit your system $dictionary = '/usr/dict/words'; // the ispell dictionary $fp = @fopen($dictionary, 'r'); if(!$fp) { return false; } $size = filesize($dictionary); // go to a random location in dictionary $rand_location = rand(0, $size); fseek($fp, $rand_location); // get the next whole word of the right length in the file while ((strlen($word) < $min_length) || (strlen($word)>$max_length) || (strstr($word, "'"))) { if (feof($fp)) { fseek($fp, 0); // if at end, go to start } $word = fgets($fp, 80); // skip first word as it could be partial $word = fgets($fp, 80); // the potential password } $word = trim($word); // trim the trailing \n from fgets return $word;}function reset_password($username) {// set password for username to a random value// return the new password or false on failure // get a random dictionary word b/w 6 and 13 chars in length $new_password = get_random_word(6, 13); if($new_password == false) { throw new Exception('Could not generate new password.'); } // add a number between 0 and 999 to it // to make it a slightly better password $rand_number = rand(0, 999); $new_password .= $rand_number; // set user's password to this in database or return false $conn = db_connect(); $result = $conn->query("update user set passwd = sha1('".$new_password."') where username = '".$username."'"); if (!$result) { throw new Exception('Could not change password.'); // not changed } else { return $new_password; // changed successfully }}function notify_password($username, $password) {// notify the user that their password has been changed $conn = db_connect(); $result = $conn->query("select email from user where username='".$username."'"); if (!$result) { throw new Exception('Could not find email address.'); } else if ($result->num_rows == 0) { throw new Exception('Could not find email address.'); // username not in db } else { $row = $result->fetch_object(); $email = $row->email; $from = "From: support@phpbookmark \r\n"; $mesg = "Your PHPBookmark password has been changed to ".$password."\r\n" ."Please change it next time you log in.\r\n"; if (mail($email, 'PHPBookmark login information', $mesg, $from)) { return true; } else { throw new Exception('Could not send email.'); } }}?>

url_fns.php

query("select bm_URL from bookmark where username = '" . $username . "'"); if (!$results) { return false; } $url_array = array(); for ($i = 1;$row = $results -> fetch_row();++$i) { $url_array[$i] = $row[0]; } return $url_array;}// Add url to dbfunction add_bm($new_url) { echo "Attempting to add ".htmlspecialchars($new_url)."
"; $valid_user = $_SESSION['valid_user']; $conn = db_connect(); $results = $conn -> query(" select * from bookmark where username = '".$valid_user."' and bm_URL = '".$new_url."'"); if ($results && ($results -> num_rows > 0)) { throw new Exception("Bookmark already exists.", 1); } $insert_result = $conn -> query("insert into bookmark values ('".$valid_user."', '".addslashes($new_url)."')"); if (!$insert_result) { throw new Exception("Bookmark could not be inserted.", 1); } return true;}// Delete url function delete_bm($user, $url) { $conn = db_connect(); $results = $conn -> query(" delete from bookmark where username = '".$user."' and bm_URL = '".$url."'"); if (!$results) { throw new Exception("Bookmark could not be deleted.", 1); } return true; }function recommend_urls($valid_user, $popularity = 1) { $conn = db_connect(); // $query = "select bm_URL // from bookmark // where username in // (select distinct(b2.username) // from bookmark b1, bookmark b2 // where b1.username='".$valid_user."' // and b1.username != b2.username // and b1.bm_URL = b2.bm_URL) // and bm_URL not in // (select bm_URL // from bookmark // where username='".$valid_user."') // group by bm_url // having count(bm_url)>".$popularity;$query = "select bm_URL from bookmark where username in (select distinct(b2.username) from bookmark b1, bookmark b2 where b1.username='".$valid_user."' and b1.username != b2.username and b1.bm_URL = b2.bm_URL) and bm_URL not in (select bm_URL from bookmark where username='".$valid_user."') group by bm_url having count(bm_url)>".$popularity; if (!($result = $conn->query($query))) { throw new Exception('Could not find any bookmarks to recommend.'); } if ($result->num_rows==0) { throw new Exception('Could not find any bookmarks to recommend.'); } $urls = array(); // build an array of the relevant urls for ($count=0; $row = $result->fetch_object(); $count++) { $urls[$count] = $row->bm_URL; } return $urls;}?>

output_fns.php

<?php echo $title;?> PHPbookmark logo

PHPbookmark


  • Store your bookmarks online with us!
  • See what other users use!
  • Share your favorite links with others!

Not a member?

Members log in here:
Username:
Password:
Forgot your password?
Email address:
Preferred username
(max 16 chars):
Password
(between 6 and 16 chars):
Confirm password:
"; echo "
"; if ((is_array($url_array)) && (count($url_array) > 0)) { foreach ($url_array as $url) { if ($color == "#cccccc") { $color = "#ffffff"; } else { $color = "#cccccc"; } //remember to call htmlspecialchars() when we are displaying user data echo "
"; } } else { echo "
"; }?>
Bookmark Delete?
".htmlspecialchars($url)."
No bookmarks on record

Home  | Add BM  | 
Delete BM  | "; } else { echo "Delete BM  | "; }?>Change password
Recommend URLs to me  | Logout

New BM:
Old password:
New password:
Repeat new password:
Enter your username
"; if ((is_array($url_array)) && (count($url_array)>0)) { foreach ($url_array as $url) { if ($color == "#cccccc") { $color = "#ffffff"; } else { $color = "#cccccc"; } echo "
"; } } else { echo "
"; }?>
Recommendations
".htmlspecialchars($url)."
No recommendations for you today.

login.php

logout.php

'; do_html_url('login.php', 'Login'); }else { echo 'Could not log you out.
'; } }else { echo 'You are not logged in ,so have not been logged out.
'; do_html_url('login.php', 'Login');}do_html_footer();?>

register_form.php

<?php

require_once('bookmark_fns.php');

do_html_header('User Registration');display_registration_form();do_html_footer();?>

register_new.php

16)) { throw new Exception("Your password must be between 6 and 16 characters - please go back and try again.", 1); } register($username, $passwd, $email); $_SESSION['valid_user'] = $username; do_html_header('Rigistration successful'); do_html_url('member.php', 'Go to members page'); do_html_footer(); } catch (Exception $e) { do_html_header('Problem: '); echo $e -> getMessage(); do_html_footer(); exit();}?>

forgot_form.php

forgot_passwd.php

"; }catch(Exception $e){ echo "Your password could not be reset - please try again later."; } do_html_url('login.php', 'Login'); do_html_footer();?>

change_passwd_form.php

change_passed.php

16)) { throw new Exception("Your password must be between 6 and 16 characters - please go back and try again.", 1); } change_password($_SESSION['valid_user'], $old_passwd, $new_passwd2); echo 'Password changed.'; }catch(Exception $e) { echo $e -> getMessage(); } display_user_menu(); do_html_footer();?>

add_bm_form.php

add_bms.php

getMessage();} display_user_menu(); do_html_footer();?>

delete_bms.php

You have not chosen any bookmarks to delete.
Please try again.

"; 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)."
"; }else { echo "Could not deleted ".htmlspecialchars($url)."
"; } } }else { echo "No bookmarks selected for deletion."; }}if ($mks = get_user_urls($_SESSION['valid_user'])) { display_user_urls($mks);} display_user_menu(); do_html_footer();?>

recommend.php

getMessage();} display_user_menu(); do_html_footer();?>

member.php

上边所有的源文件的下载地址

转载地址:http://fuhgx.baihongyu.com/

你可能感兴趣的文章
读jQuery之十(事件模块概述)
查看>>
仅img元素创建后不添加到文档中会执行onload事件
查看>>
全球知名汽车公司品牌
查看>>
Linux SSH远程文件/目录传输命令scp
查看>>
黄聪:WordPress判断当前用户是否为管理员登录
查看>>
Android service binder aidl 关系
查看>>
Redis数据结构详解(一)
查看>>
MySql配置方法,批处理进行MySql配置
查看>>
UE4 Class Naming Prefixes
查看>>
30个优秀的网站导航菜单设计案例
查看>>
Eclipse Tips(3):Template
查看>>
Win32 API消息函数:GetMessagePos
查看>>
跟小静读CLR via C#(17)--接口
查看>>
C#WinForm应用程序实现自动填充网页上的用户名和密码并点击登录按钮
查看>>
[Z]一个轻松制作和处理矢量图的工具和方法
查看>>
PetaPoco的默认映射
查看>>
POJ 基本算法(3)
查看>>
最小生成树两个重要的算法:Prim 和 Kruskal
查看>>
SQL SERVER 中常见的高可用方案
查看>>
PHP 反射 初步测试
查看>>