新闻内容模块
所涉及的内容
1. 新闻内容表的设计
2. 新闻列表的分页(即每页显示固定条数的新闻)
3. 显示新闻的内容(点击“新闻标题”,跳转到新闻内容页面(news_content.php)显示新闻具体内容)
4. 新闻的添加(点击“添加新闻”按钮,跳转到新闻添加页面(news_add.php))
5. 新闻的删除(点击“删除”,跳转到新闻删除页面(news_del.php))
6. 新闻的修改(点击“修改”,跳转到新闻修改页面(news_edit.php))
1. 新闻内容表
字段名 | 解释 |
---|---|
cat | 分类 |
title | 标题 |
author | 作者 |
source | 来源 |
keywords | 网页关键字 |
description | 描述 |
orderby | 排序 |
content | 内容 |
hits | 点击率 |
addate | 发布时间 |
2. 显示新闻列表 manage.php
该页面实现
新闻列表的分页
包含功能
1.显示新闻的内容(news_content.php)
2.新闻的添加(news_add.php)
3.新闻的删除(news_del.php)
4.新闻的修改(news_edit.php)
分页原理
项 | 变量表示 | 解释 |
---|---|---|
总记录数 | $records | mysql_num_rows() |
每页显示显示页数 | $pagesize | 用户定义 |
总页数 | $pages | $records / $pagesize |
当前页 | $page | 用户选择 |
函数ps
mysql_num_rows() 函数返回结果集中行的数目。
分页的SQL语句
SELECT * FROM news LIMIT \$startrow,\$pagesize;
页数 | 表示 |
---|---|
第一页 $page=1 | LIMIT 0,10 |
第二页 $page=2 | LIMIT 10,10 |
第三页 $page=3 | LIMIT 20,10 |
…… | …… |
可以总结出
$startrow = ($page - 1) * $pagesize;
新闻列表页面(manage.php)
<!--manage.php--> <?php //包含连接MySQL的文件include "conn.php"; //分页的相关变量$pagesize = 5; //每页显示的新闻条数 //获取地址栏中传递的page参数,确定当前页,当前行(所有记录中的) if(empty($_GET['page'])){ $page = 1; //默认为第一页 $startrow = 0; }else{ $page = (int)$_GET['page']; //当前页数 $startrow = ($page-1)*$pagesize; //当前行数}//构建查询的SQL语句 $sql = "SELECT * FROM 007_news"; //执行SQL语句,返回的是所有记录的结果集$result = mysql_query($sql);//总记录数和总页数 $records = mysql_num_rows($result);$pages = ceil($records / $pagesize);//构建分页的SQL语句 $sql = "SELECT * FROM 007_news ORDER BY orderby ASC,id DESC LIMIT $startrow,$pagesize"; //执行SQL语句,返回的是结果集(10条记录)$result = mysql_query($sql);?> <!DOCTYPE html> <html xmlns=" <head><meta charset=UTF-8> <title>管理新闻列表</title> <script type="text/javascript"> function confirmDel(id){ //询问是否删除记录 if(window.confirm("你确定要删除吗?")){ //跳转到PHP的删除页面 del.php location.href = "news_del.php?id="+id; } } </script> </head> <body> <p style="padding:5px;"> <input type="button" value="添加新闻" onClick="javascript:location.href='news_add.php'"/></p> <table width="70%" border="1" bordercolor="#CCC" rules="all" cellpadding="5" align="center"> <tr> <th>编号</th> <th>新闻标题</th> <th>作者</th> <th>来源</th> <th>排序</th> <th>点击率</th> <th>发布时间</th> <th>操作选项</th> </tr> <?php while($arr = mysql_fetch_assoc($result)){ ?> <tr> <td><?php echo $arr['id']?></td> <td> <a target="_blank" href="news_content.php?id=<?php echo $arr['id']?>"> <?php echo $arr['title']?> </a> </td> <td><?php echo $arr['author']?></td> <td><?php echo $arr['source']?></td> <td><?php echo $arr['orderby']?></td> <td><?php echo $arr['hits']?></td> <td><?php echo date("Y-m-d H:i", $arr['addate'])?></td> <td> <a href="news_edit.php?id=<?php echo $arr['id']?>">修改</a> <a href="javascript:void(0)" onClick="confirmDel(<?php echo $arr['id']?>)">删除</a> </td> </tr> <?php }?> <tr> <td colspan="8" align="center"> <?php $prev = $page-3; $next = $page+3; if($page < 4){ $prev = 1; $next = 7; //后面补齐 } if($page > $pages-3){ $next = $pages; $prev = $pages-6; //前面补齐 } for($i=$prev;$i<=$next;$i++){ //当前页页码号在中间,前后各3个页码号,显示7个页码号 if($i == $page){//当前页,不加链接 echo "$i "; }else{ echo "<a href='manage.php?page=$i'>$i</a> "; } } ?> </td> </tr></table></body></html>
运行的效果
3. 显示新闻内容 news_content.php
点击新闻列表中某条新闻的标题,之后会跳转到该条新闻的详细内容页面(news_content.php)
<!--news_content.php--> <?php //**************************读取一条记录****************************** //包含连接数据库的文件 include "conn.php"; //获取地址栏传递过来的id值 $id = $_GET['id']; //构建更新点击率的SQL语句 $sql = "UPDATE 007_news SET hits=hits+1 WHERE id=$id"; mysql_query($sql); //构建查询的SQL语句 $sql = "SELECT * FROM 007_news WHERE id=$id"; //执行SQL语句 $result = mysql_query($sql); //取出唯一的一条记录 $arr = mysql_fetch_assoc($result); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title><?php echo $arr['title']?></title> </head> <body> <table width="1000" cellpadding="5" align="center"> <tr> <th><h2><?php echo $arr['title']?></h2></th> </tr> <tr> <td bgcolor="#ccc" align="center"> 作者:<?php echo $arr['author']?> 来源:<?php echo $arr['source']?> 点击率:<?php echo $arr['hits']?>次 发布时间:<?php echo date("Y-m-d H:i", $arr['addate'])?> </td> </tr> <tr> <td><?php echo $arr['content']?></td> </tr> </table> </body> </html>
运行效果
4. 添加新闻
在新闻列表页(manage.php)点击“添加新闻”,会跳转到“添加新闻”页面(news_add.php)。添加成功后,数据库中就添加了该条新增记录了,然后跳转到操作成功提示页面,5秒后,跳转到新闻列表页面(manage.php)。
添加新闻(news_add.php)
<!--news_add.php--> <?php //*****************************添加新闻******************************** //连接MySQL数据库 include "conn.php"; //判断表单是否提交 if(isset($_POST['ac']) && $_POST['ac']=="add"){ //获取表单提交的数据 $cat = $_POST['cat']; $title = $_POST['title']; $author = $_POST['author']; $source = $_POST['source']; $orderby = $_POST['orderby']; $keywords = $_POST['keywords']; $description = $_POST['description']; $content = $_POST['content']; $addate = time(); //构建写入的SQL语句 $sql = "INSERT INTO 007_news(cat,title,author,source,orderby,keywords,description,content,addate) VALUES($cat,'$title','$author','$source',$orderby,'$keywords','$description','$content',$addate)"; //执行SQL语句 if(mysql_query($sql)){ //如果执行成功,则跳转到success.php页面 $url = "manage.php"; $message = urlencode("记录添加成功!"); echo "<script>location.href='success.php?url=$url&message=$message'</script>"; exit(); } } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>添加新闻</title> <!--引入编辑器文件和语言包--> <script charset="utf-8" src="js/editor/kindeditor-min.js"></script> <script charset="utf-8" src="js/editor/lang/zh_CN.js"></script> <script> //加入在线编辑器 var editor; KindEditor.ready(function(K) { //在当前网页中,查找<textarea name = "content"></textarea>,并替换成kindeditor编辑器。 editor = K.create('textarea[name="content"]', { allowFileManager : true //是否允许上传文件 }); }); </script> </head> <body> <form name="form1" method="post" action=""> <table width="800" border="1" rules="all" bordercolor="#ccc" cellpadding="5" align="center"> <tr> <th colspan="2">添加新闻</th> </tr> <tr> <td width="80" align="center">新闻类型:</td> <td> <select name="cat"> <option value="1">新闻类型1</option> <option value="2">新闻类型2</option> <option value="3">新闻类型3</option> <option value="4">新闻类型4</option> </select> </td> </tr> <tr> <td align="right">新闻标题:</td> <td><input type="text" name="title" size="100"/></td> </tr> <tr> <td align="right">作者:</td> <td> <input type="text" name="author" value="admin" size="10"/> 来源:<input type="text" name="source" value="default" size="40"/> 排序:<input type="text" name="orderby" maxlength="2" value="50"/> </td> </tr> <tr> <td align="right">关键字:</td> <td><input type="text" name="keywords" size="100"/></td> </tr> <tr> <td align="right">描述:</td> <td><input type="text" name="description" size="100"></td> </tr> <tr> <td align="right">内容:</td> <td><textarea name="content" style="width:100%;height:240px;"></textarea></td> </tr> <tr> <td> </td> <td> <input type="submit" value="提交"/> <input type="hidden" name="ac" value="add"/> <!--隐藏域,表单验证--> <input type="reset" value="重置"/> </td> </tr> </table> </form> </body> </html>
代码PS
上述代码中引入了在线HTML编辑器:kindeditor 将editor文件直接“复制”到要引入文件的同级目录即可。
在需要的编辑器的页面,引入如下文件:
<!--在代码中引入在线HTML编辑器:kindeditor--> <script charset="utf-8" src="js/editor/kindeditor-min.js"></script> <script charset="utf-8" src="js/editor/lang/zh_CN.js"></script> <script> //加入在线编辑器 var editor; KindEditor.ready(function(K) { //在当前网页中,查找<textarea name = ‘content’></textarea>,并替换成kindeditor编辑器。 editor = K.create('textarea[name="content"]', { allowFileManager : true //是否允许上传文件 }); }); </script> <textarea id="content" name="content" style="width:100%;height:300px; "></textarea>
运行效果
5. 删除新闻
在新闻列表页(manage.php)点击“删除”,出现确认删除的提示框,点击“确认”后,会跳转到新闻删除页面(news_del.php),对该条新闻进行删除,此后数据库中就没有该条记录了。删除成功后,跳转到操作成功提示页面,5秒后,跳转到新闻列表页面(manage.php)。
删除新闻(news_del.php)
<!--news_del.php--> <?php //**********************删除记录*********************** //包含连MySQL接数据库的文件conn.php include "conn.php"; //获取地址栏传递的id参数,GET方式获取地址栏数据,POST获取表单数据 $id = (int)$_GET["id"]; //构建删除的SQL语句 $sql = "DELETE FROM 007_news WHERE id=$id"; //执行SQL语句 if(mysql_query($sql)) { //如果执行成功,则跳转到success.php页面 $url = "manage.php"; $message = urlencode("id={$id}记录删除成功!"); echo "<script>location.href='success.php?url=$url&message=$message'</script>"; }else { //如果执行失败,则跳转到error.php页面 $message = urlencode("记录删除失败!"); header("location:error.php?message=$message"); } ?>
6. 修改新闻
在新闻列表页(manage.php)点击修改,会跳转到新闻修改页面(news_edit.php),首先页面会读取指定id的数据,并写入对应的表单输入框中,对照原始信息作修改,点击修改后,数据库的记录也就更新了。修改成功后,跳转到操作成功提示页面,5秒后,跳转到新闻列表页面(manage.php)。
修改新闻(news_edit.php)
<!--news_edit.php--> <?php //*****************************修改新闻******************************** //连接MySQL数据库 include "conn.php"; //判断表单是否提交 if(isset($_POST['ac']) && $_POST['ac']=="add"){ //获取表单提交的数据 $cat = $_POST['cat']; $title = $_POST['title']; $author = $_POST['author']; $source = $_POST['source']; $orderby = $_POST['orderby']; $keywords = $_POST['keywords']; $description = $_POST['description']; $content = $_POST['content']; //通过表单提交用POST方式,获得隐藏域提交过来的id值 //这里不直接通过GET方式来获取id值,而是用隐藏域来获得id,安全性更高,而且地址栏的值可以改动 $id = $_POST['id']; //构建要修改的SQL语句 $sql = "UPDATE 007_news SET cat=$cat,title='$title',author='$author',source='$source',orderby=$orderby,keywords='$keywords',description='$description',content='$content' WHERE id=$id"; //执行SQL语句 if(mysql_query($sql)){ //如果执行成功,则跳转到success.php页面 $url = "manage.php"; $message = urlencode("记录修改成功!"); echo "<script>location.href='success.php?url=$url&message=$message'</script>"; exit(); } }else{ //表单提交之前,应先显示数据库中的原始数据 //获取地址栏传递的id值 $id = $_GET['id']; //构建查询的SQL语句 $sql = "SELECT * FROM 007_news WHERE id=$id"; //执行SQL语句 $result = mysql_query($sql); //取出记录 $arr = mysql_fetch_assoc($result); } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>修改新闻</title> <!--引入编辑器文件和语言包--> <script charset="utf-8" src="js/editor/kindeditor-min.js"></script> <script charset="utf-8" src="js/editor/lang/zh_CN.js"></script> <script> //加入在线编辑器 var editor; KindEditor.ready(function(K) { //在当前网页中,查找<textarea name = "content"></textarea>,并替换成kindeditor编辑器。 editor = K.create('textarea[name="content"]', { allowFileManager : true //是否允许上传文件 }); }); </script> </head> <body> <form name="form1" method="post" action=""> <table width="800" border="1" rules="all" bordercolor="#ccc" cellpadding="5" align="center"> <tr> <th colspan="2">修改新闻</th> </tr> <tr> <td width="80" align="center">新闻类型:</td> <td> <select name="cat"> <option value="1" <?php if($arr['cat']==1){echo 'selected=selected';}?> >公司新闻</option> <option value="2" <?php if($arr['cat']==2){echo 'selected=selected';}?> >行业新闻</option> <option value="3" <?php if($arr['cat']==3){echo 'selected=selected';}?> >疾病预防</option> <option value="4" <?php if($arr['cat']==4){echo 'selected=selected';}?> >帮助文档</option> </select> </td> </tr> <tr> <td align="right">新闻标题:</td> <td><input type="text" name="title" size="100" value="<?php echo $arr['title']?>"/></td> </tr> <tr> <td align="right">作者:</td> <td> <input type="text" name="author" value="<?php echo $arr['author']?>" size="10"/> 来源:<input type="text" name="source" value="<?php echo $arr['source']?>" size="40"/> 排序:<input type="text" name="orderby" maxlength="2" value="<?php echo $arr['orderby']?>"/> </td> </tr> <tr> <td align="right">关键字:</td> <td><input type="text" name="keywords" size="100" value="<?php echo $arr['keywords']?>"/></td> </tr> <tr> <td align="right">描述:</td> <td><input type="text" name="description" size="100" value="<?php echo $arr['desciption']?>"></td> </tr> <tr> <td align="right">内容:</td> <td><textarea name="content" style="width:100%;height:240px;"><?php echo $arr['content']?></textarea></td> </tr> <tr> <td> </td> <td> <input type="submit" value="修改"/> <input type="hidden" name="ac" value="add"/> <!--隐藏域,表单验证--> <input type="hidden" name="id" value="<?php echo $id?>"/> <!--隐藏域,用于传递通过GET方式获得的id值--> <input type="reset" value="重置"/> </td> </tr> </table> </form> </body> </html>
위 내용은 PHP로 MySQL 데이터베이스를 운영하는 방법에 대한 자세한 설명(4)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
