PHP で単一ファイルのゲストブックを作成する方法を一緒に学びましょう

WBOY
リリース: 2016-06-21 08:51:11
オリジナル
1276 人が閲覧しました

オリジナルシングルファイル掲示板gbk版

ビデオチュートリアルを見た後に書かれたメッセージボード

基本的に、PHP、変数、定数、ループ (if、switch)、変数スコープ、セッション、関数、再帰関数、セキュリティ処理、クラス、コンストラクター、静的変数、データベース接続、追加、クエリ、更新の基本的な知識ポイントのほとんどをカバーしています。 、

を削除します

HTML、隠しフォーム、JS フォーム検証、スケジュールされたページ リダイレクト、CSS 一時停止の知識ポイント

実装関数:

メッセージの追加、メッセージの削除、ページめくり、管理者によるパスワードの変更など、1 つのページに基づいて掲示板の完全な機能を実現します

コメントはより詳細です

ユーザー名: 管理者

パスワード: 123456

session_start(); //セッションを開始します

/*

* 単一ファイルのゲストブック
* PHP100.com からのものであることを明記してください

*/

//変数の定義と代入

$db_host = 'localhost:3306'; //データベースのホストのポート番号を設定します。通常は localhost:3360 ですが、通常は変更する必要はありません

$db_user = 'root' //データベースのユーザー名を設定します

;

$db_pass = 'liijie' //データベースのパスワードを設定します

;

$db_name = 'test' //データベース名を設定します

;

$db_char = 'GBK' // デフォルトは GBK です。

//定数を定義します

define('Per_page',6) //ページごとのレコード数を定義します

?>

<頭>

k 掲示板

<スタイル>

<スクリプト言語="javascript">

留言板

首页 管理

<スクリプト言語="javascript">

//基本クラスをインスタンス化します

$base = 新しいベース($db_host,$db_user,$db_pass,$db_name,$db_char);

//基本クラスを定義します

クラスベース{

プライベート静的 $conn ;

var $err ;

//php5 コンストラクターが接続を初期化します

function __construct($db_host,$db_user,$db_pass,$db_name,$db_char='GBK'){

/*データベースに接続し、データベースの文字セットを設定*/

@ $dbo = mysql_connect($db_host,$db_user,$db_pass) または die('データベースのパスワードが正しいか確認してください。');

mysql_select_db($db_name,$dbo) または die ('データベースが存在しません。正しくインストールされているか確認してください');

mysql_query("セット名 '$db_char'",$dbo);

$this->conn = $dbo;

}

//php4 コンストラクター

関数ベース($db_host,$db_user,$db_pass,$db_name,$db_char='GBK'){

$this->__construct($db_host,$db_user,$db_pass,$db_name,$db_char);

}

//メッセージを追加

関数 add(&$data){

$username = $data['username']?$data['username']:'anonymous';

$title = $data['title'];

$msg = $data['msg'];

$sql = sprintf("`liuyan` 値に挿入('','%s','%s','%s','%s')",$username,$title,$msg,time() );

mysql_query($sql,$this->conn);

return mysql_insert_id($this->conn);

}

//メッセージリスト

関数リスト($p=0){

$c = 0;

if($p>0)$c=($p-1) * ページごと;

$limit = " 制限 ".$c.",".Per_page;

$where = '1';

$r = '';

$sql = sprintf("SELECT * from `liuyan` where '%s' $limit",$where.$limit);

$query = mysql_query($sql,$this->conn);

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

$r[] = $row;

}

$r を返します;

}

//統計ページング

関数ページ(){

$sql = "`liuyan` から count(id) を選択";

$query = mysql_query($sql,$this->conn);

$row = mysql_fetch_row($query);

$page['totals'] = $row[0];

$page['nums'] = ceil($row[0]/ページごと);

$page を返す;

}

//メッセージを削除

関数 del($id){

$this->check();

if(is_array($id)){

$ids .= implode(',',$id);

}その他{

$ids = $id;

}

$sql = "ID が ($ids) にある `liuyan` から削除";

mysql_query($sql,$this->conn);

return mysql_affected_rows($this->conn);

}

//ログイン

関数ログイン($admin_name,$admin_pass){

$pass = md5($admin_name.$admin_pass.$admin_name);

$sql="select * from `admin` where `name`='$admin_name' and `pass` = '$pass' ";

$query = mysql_query($sql,$this->conn);

$row = mysql_fetch_array($query);

if($row['id']>0){

$_SESSION=$row;

ShowMsg('ログイン成功、管理者様'.$_SESSION['name'],3,'?do=manage');

}その他{

ShowMsg('ログインに失敗しました'.$_SESSION['name'],3,'?do=login');

}

}

//パスワードの変更

関数 repass($admin_name,$admin_pass,$admin_id){

$this->check();

$pass = md5($admin_name.$admin_pass.$admin_name);

$sql = "UPDATE `admin` set name='$admin_name' , pass='$pass' where id=$admin_id";

mysql_query($sql,$this->conn);

return mysql_affected_rows($this->conn);

}

//終了

関数 logout(){

$this->check();

session_destroy();

}

// ログインしているかどうかを確認します

関数 check(){

if($_SESSION['name'] && $_SESSION['pass']){

//ShowMsg('登录成功,欢迎管理员'.$_SESSION['name'],3,'?do=manage');

}else{

ShowMsg('请先登录'.$_SESSION['name'],3,'?do=login');

}

}

function getErr(){

return $this->err;

}

function setErr(){

$this->err = mysql_error($this->conn);

}

}

 

//安全处理 递归函数

function Post_check($arr){

if(is_array($arr)){

foreach($arr as $n=>$k){

$data[$n] = Post_check($k);

}

}else{

return addslashes(trim($arr));

}

return $data;

}

 

//定时跳转

function ShowMsg($msg,$time=0,$url=''){

echo "<script>ShowMsg('$msg',$time,'$url');</script>";

exit;

}

 

?>

//流程处理 不同操作显示不同界面

$do = $_REQUEST['do'];

switch($do){

//添加留言

case 'add':

if($_POST['do'] == 'add'){

$data = Post_check($_POST);

if(@$base->add($data)>1){

echo '留言添加成功';

}else{

echo $base->err;

}

}

break;

 

//删除留言

case 'del':

$data = Post_check($_POST);

$affected_rows=$base->del($data['id']);

if($affected_rows>0){

echo '成功删除'.$affected_rows.'行'.'返回';

}else{

echo '删除失败';

}

break;

 

 

//管理员修改密码

case 'repass':

$data = Post_check($_POST);

$r = $base->repass($data['name'],$data['admin_pass'],$data['id']);

if($r){

echo '密码修改成功';

}else{

echo '密码修改失败';

}

break;

 

 

//管理员退出登录

case 'logout':

$base->logout();

ShowMsg('成功退出登录'.$_SESSION['name'],3,'?do=');

break;

 

 

 

//管理员登录

case 'login':

 

if($_POST['admin_name'] && $_POST['admin_pass']){

$data = Post_check($_POST);

$base->login($data['admin_name'],$data['admin_pass']);

}

 

?>

  

  

 

 

//管理留言

break;

case 'manage':

$base->check();

$p = intval($_GET['p']);

$lists = $base ->lists($p);

if(!$lists){

echo '留言为空';

}else{

 

 

?>

管理员:  退出    新密码:      重复密码:      

?>

}

?>

 

选择idnametitlemsgtime

}

//分页

$baseurl = '?do=manage&p=';

$pages = $base->page();

echo '共'.$pages['totals'].'条 '.$p.'/'.$pages['nums'].'页';

echo "首页";

for($i=0;$i<3;$i++){

$class='';

$link = 1;

if($p-1>0)$link =$p-1;

$link+=$i;

if($link>$pages['nums'])break;

if($link==$p){

$class="class='current'";

}

echo "".$link."";

}

echo "末页";

?>

休憩;

?>

 

//默认显表示留言列表

デフォルト:

$p = intval($_GET['p']);

$lists = $base ->lists($p);

if(!$lists){

echo '留言は空';

}その他{

 

 

?>

<テーブル幅="880px">

id名前タイトル< td width="50%">メッセージ時間

?>

< ;/td>< ;/td>

}

?>

 

}

//分页部分

$pages = $base->page();

echo '共'.$pages['totals'].'条 '.$p.'/'.$pages['nums'].'页';

echo "首页";

// 表示当前页、上一页 下一页 并自定样式

for($i=0;$i

$class='';

$link = 1;

if($p-1>0)$link =$p-1;

$link+=$i;

if($link>$pages['nums'])break;

if($link==$p){

$class="class='current'";

}

echo "".$link."";

}

echo "末页";

?>

<入力タイプ = "hidden"id ="do" 名前 = "do" 値 = "add" />



 

休憩;

 

 

}?>

来自 http://www.3oom.com/blog/15.html



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!