前言
学习举办了个蛋疼的网页设计大赛,为了学分,我不得不参加一下,其实参加一下也蛮好的,前段时间学了一点PHP,也应该要找点什么实操去做做了,否则像C#那样学了什么都不做结果现在C#也忘了也不会写了。我是做后端功能开发的,队友做前端,两个前端一个后端的组合。。艰难地熬过了一周,把协定好的基本功能写好了,初赛作品也交上去了,大概现在就是这个情况吧,所以做一篇记录记录一下。本来这篇文章早几天就应该有了,只是一直拖一直拖,现在也要写了,要不然这个月就过去了。
正文
【就按照我做的功能分类吧】
功能页面安排
功能页面安排结构其实也是一个难点,有时候我要把PHP代码嵌入到HTML里面,有时候需要独立,其实这是考验对网站结构的安排。其实不懂可以思考成CSS文件(这个都不会麻烦先学学网站开发),可以把CSS独立成一个.css文件,也可以把css放进HTML布局文件里面,前者可以多个HTML布局共用一个层叠样式,后者就是只修改嵌入的那个HTML布局层叠。
1.独立页面
一些公用功能:例如数据库连接、页面共用的布局等。
调用方法: include("?????.php");或require("?????.php");
require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
2.整合页面
一些页面的独有功能:例如文章撰写、文件上传等。
实际上这两个功能也可以独立文件,可以用post或get方式从原HTML文件把数据包转给php页面执行操作,但如果是纯php网页,这个方式就显得没什么必要了,直接嵌入到代码中就行。
3.页面功能的开发注意事项
php网页开发有点独特,HTML布局代码在php语言的眼里属于一种字符串输出,也就是说,如果想布局文件动态化(例如登录后把登录按钮变成用户名),直接用php的echo输出即可。
独立页面的页面共用布局实际就类似于CSS的共用层叠,在php,页面的各部分布局可以根据需要模块化,例如页头也页脚,两个独立完成之后,通过include就可以把文件嵌入到一个页面了,可以节省很多开发时间,还能优化资源使用。
如果是HTML通过post或者get转到另一个php执行操作,必须要先建立一个表单包括某个功能块,然后表单的头要写
action=xxx.php
method=post或get当然,如果在同一个页面文件里面想调用表单里面的东西,也要先写一个method,否则也无法调用
数据库连接
数据库连接也算是比较简单了,先贴一个代码,以mysql为例。
<?php
$servername = ""; //数据库ip
$username = ""; //数据库登录用户名
$password = ""; //数据库登录密码
$dbname = ""; //数据库名称
$port = ""; //数据库端口
$conn = mysqli_connect("$servername", "$username", "$password", "$dbname", "$port");
mysqli_close($conn); //退出数据库连接
?>
一般来说,普通用户建站数据库一般都是挂本地的了,所以ip一般都填写127.0.0.1,当然如果有多个服务器,且数据库在其他服务器里面,就要根据数据库服务器所在的ip填写。其他的用户名、密码、数据库名称就不说了,至于端口,mysql默认是3306,其他的端口号根据自己的情况填写即可。记得使用完数据库后要退出数据库连接。
数据库的其他相关操作之后再详细写一篇新的记录,因为涉及的内容比较多。
页面跳转
页面跳转不做什么解释,一般用于登录注册之后或者其他动作完成之后的一个自动跳转,通常用以下代码:
header("location:php页面文件路径");
链接拼接
我们常常在一些动态网站上看到的连接是这样的:www.???.com/???.php?cid=111,其实这个涉及到连接的拼接问题,实际上也很简单,cid=111实际上是一个参数,?是一个连接符号,具体是怎么实现功能呢?我百度了很多也没有什么比较适合简单新手的方法,不过我这里写一下我是怎么定位录入了数据库的网站文章内容,其他调用数据同理。
我在文章展示页面先分解网站链接,以www.???.com/???.php?cid=111为例
$picCid = end(explode("=", $_SERVER["QUERY_STRING"]));end():字符串的结尾explode():字符串分割explode("指定分割标志", 要分割的字符串)$_SERVER["QUERY_STRING"]:当前网站链接
所以这条代码的意思是:获取当前网站链接,并以“=”进行分割,获取分割后排列的最后那串字符,实际上就是获取参数111
接着利用参数,通过数据库操作查找该参数在数据库的一些数据
最后通过获取出来并显示到屏幕上
文件上传
文件上传我基本都是在网上拷的代码,不过也基本弄得明白了,先把代码贴出来
function picUpload(){
//允许上传的图片后缀名
$allowedKinds = array("jpeg", "jpg", "png");
$fileName = explode(".", $_FILES["file"]["name"]);
//获取文件后缀名
$getExt = end($fileName);
if (!empty($_FILES["file"]["name"]))
{
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 5242880)
&& in_array($getExt, $allowedKinds))
{
$fileUrl = "upload/" . time().rand(1,1000).substr($_FILES["file"]["name"],strrpos($_FILES["file"]["name"],"."));
move_uploaded_file($_FILES["file"]["tmp_name"], $fileUrl);
textUpload($fileUrl);
}
else
{
echo "非法的文件格式";
}
}
}实际上原理也很简单,我们也知道php有一些超级全局变量,这些超级全局变量里面有一个$_FILES变量,用此变量可以获取上传文件的类型,大小,后缀,路径,临时路径等。
$_FILES的代码格式:$_FILES"表单的上传功能的name"
表单的上传功能的name一定要对应好,不能出错。
要注意的是:表单的上传功能type是file,确认上传功能的按钮的type要用commit。
参数其实就是上面提到的类型(type),大小(size),临时路径(tmp_name)等。其他参数以后再补充,
为了防止上传的文件出现同名,一般上传到服务器的文件最好经过重命名,所以这里写了一条这样的代码:
time().rand(1,1000).substr($_FILES["file"]["name"],strrpos($_FILES["file"]["name"],"."))这条代码给一个文件做了重命名,分了三个部分(以小数点为分割)
第一部分是时间,第二部分是1~1000的随机数,第三部分就是后缀名。
strrpos():截取某字符串在另一个字符串最后一次出现的位置
格式:strrpos("字符串","字符串");
substr():获取某个字符所在位置的包括该字符和后面的字符串,也就是说例如20位长度的字符,某字符在第9位,那么就可以用这个方法获取从第9位开始一直到结尾这一整串字符。
格式:substr("字符串",位置数); //要注意的是,位置是从0开始算,而且只能是int数值;
Cookie的使用
关于Cookie的使用,本来我弄得这个网站想用Session的,用来做网站登陆之后的状态保持,结果发现Session不行,最后转到了Cookie,本来应该是Session+Cookie共用的,不过我暂时还没学会,所以只做了Cookie,Session以后研究出来再做个记录吧。
Cookie的开启:setcookie();
setcookie("cookie的名称","cookie的值"); //一般用表单的name和自定义的变量。
Cookie的使用:以保持登录状态为例子
用Cookie超级全局变量,判断该cookie是否为空置,非空的话就执行其他动作
!empty($_COOKIE["cookie名称"] //!empty是非空
结尾
记录到这里也差不多了,还有些具体的东西到时候再换篇文章继续讨论并记录。终于赶在这个月月底写了一篇博客,这个月不是0作业!!




哈哈
By 顾基佬 at May 2nd, 2019 at 11:24 am.