線上書籍

Home

[1032]PHP入門

<?php // 啟用 session session_start(); /*----引入檔案----*/ require_once "config.php"; require_once "function.php"; /*----整理傳進來的變數或變數初始值----*/ //設定樣板中 [var.變數] 對應到的幾個變數其預設值 $news_title=isset($_SESSION['news_title'])?$_SESSION['news_title']:""; $news_content=isset($_SESSION['news_content'])?$_SESSION['news_content']:""; $author=isset($_SESSION['author'])?$_SESSION['author']:""; $post_time=isset($_SESSION['post_time'])?$_SESSION['post_time']:date("Y-m-d H:i:s"); $ip=$_SERVER['REMOTE_ADDR']; $passwd_error=$next_op=''; $op=isset($_REQUEST['op'])?$_REQUEST['op']:""; $sn=isset($_REQUEST['sn'])?intval($_REQUEST['sn']):""; /*----流程控制----*/ switch ($op) { case 'passwd_error': $passwd_error=error_msg("密碼錯誤!!請檢查密碼是否正確!"); $next_op=empty($sn)?"save":"update"; break; case 'db_error': $passwd_error=error_msg("資料庫連線錯誤!!請檢查資料庫帳號、密碼是否正確!"); break; case 'save': save_news(); header("location:index.php"); exit; break; case 'update': update_news(); header("location:index.php?op=view&sn={$sn}"); exit; break; case 'modify': link_db(); //讀取eznews資料表所有欄位,並指定某一筆特定資料 $sql="select * from eznews where sn='$sn'"; //傳回值存到 $result 以供抓取資料用 $result=mysql_query($sql) or die("{$sql}<br>".mysql_error()); $news=mysql_fetch_assoc($result); $news_title=$news['news_title']; $news_content=$news['news_content']; $next_op="update"; break; default: $next_op="save"; break; } /*----輸出----*/ show_page('post_tpl'); /*----所有函數----*/ //顯示錯誤訊息 function error_msg($msg=""){ $passwd_error=" <div class='alert alert-danger'> $msg </div>"; return $passwd_error; } //儲存新聞 function save_news(){ //過濾外面傳來的變數 $op=isset($_POST['op'])?$_POST['op']:""; $password=isset($_POST['password'])?$_POST['password']:""; $news_title=isset($_POST['news_title'])?check_input($_POST['news_title']):""; $news_content=isset($_POST['news_content'])?check_input($_POST['news_content']):""; $author=isset($_POST['author'])?check_input($_POST['author']):""; $ip=isset($_POST['ip'])?check_input($_POST['ip']):""; $post_time=isset($_POST['post_time'])?check_input($_POST['post_time']):""; //接收使用者輸入密碼,失敗轉回發布頁 if(empty($password) or $password!=_POST_PASSWD){ // 產生 cookie // setcookie('news_title',$news_title); // setcookie('news_content',$news_content); // 產生 session,以記住剛剛使用者輸入的資料,避免需要重打 $_SESSION['news_title']=$news_title; $_SESSION['news_content']=$news_content; //轉回編輯頁面,並用 get 方式,傳遞 $op 以便顯示密碼有誤的訊息 header("location:{$_SERVER['PHP_SELF']}?op=passwd_error"); exit; }else{ // nl2br()將換行符號轉換為<br>標籤 //$news_content=nl2br($news_content); // 發布正確,剛剛輸入的內容無需在記住,因此清空之。 $_SESSION['news_title']=$_SESSION['news_content']=''; } if(!link_db()){ $_SESSION['news_title']=$news_title; $_SESSION['news_content']=$news_content; //轉回編輯頁面,並用 get 方式,傳遞 $op 以便顯示密碼有誤的訊息 header("location:{$_SERVER['PHP_SELF']}?op=db_error"); exit; } //存到資料庫 $sql="insert into eznews (news_title, news_content, ip, author, post_time) values('$news_title', '$news_content', '$ip', '$author', '$post_time')"; mysql_query($sql) or die($sql."<br>".mysql_error()); } //更新新聞 function update_news(){ //過濾外面傳來的變數 $password=isset($_POST['password'])?$_POST['password']:""; $news_title=isset($_POST['news_title'])?check_input($_POST['news_title']):""; $news_content=isset($_POST['news_content'])?check_input($_POST['news_content']):""; $author=isset($_POST['author'])?check_input($_POST['author']):""; $ip=isset($_POST['ip'])?check_input($_POST['ip']):""; $post_time=isset($_POST['post_time'])?check_input($_POST['post_time']):""; $sn=isset($_POST['sn'])?intval($_POST['sn']):""; //接收使用者輸入密碼,失敗轉回發布頁 if(empty($password) or $password!=_POST_PASSWD){ // 產生 cookie // setcookie('news_title',$news_title); // setcookie('news_content',$news_content); // 產生 session,以記住剛剛使用者輸入的資料,避免需要重打 $_SESSION['news_title']=$news_title; $_SESSION['news_content']=$news_content; //轉回編輯頁面,並用 get 方式,傳遞 $op 以便顯示密碼有誤的訊息 header("location:{$_SERVER['PHP_SELF']}?op=passwd_error&sn=$sn"); exit; }else{ // nl2br()將換行符號轉換為<br>標籤 //$news_content=nl2br($news_content); // 發布正確,剛剛輸入的內容無需在記住,因此清空之。 $_SESSION['news_title']=$_SESSION['news_content']=''; } if(!link_db()){ $_SESSION['news_title']=$news_title; $_SESSION['news_content']=$news_content; //轉回編輯頁面,並用 get 方式,傳遞 $op 以便顯示密碼有誤的訊息 header("location:{$_SERVER['PHP_SELF']}?op=db_error"); exit; } //存到資料庫 $sql="update eznews set news_title='$news_title', news_content='$news_content', ip='$ip', author='$author', post_time='$post_time' where sn='$sn'"; mysql_query($sql) or die($sql."<br>".mysql_error()); } //替特殊符號加入反斜線 function check_input($value){ if (!get_magic_quotes_gpc()){ $value = addslashes($value); } return $value; } ?>