1、PHP的web编程基础
1.1HTTP协议原理
1.2创建一个表单
在我们的HTML中创建表单是通过<form>来完成的;在form标签里面有两个很重要的属性必须写对,action:表单提交的路径,method:一个get\post;以post方式提交表单的时候,表单数据随HTML正文一起发送,以get方式提交表单的时候,表单数据加到地址之后传递。
<form action="demo1.php" method="post"> <table align="center" border="1" cellpadding="5px" cellspacing="0px;"> <tr> <td>用户名:</td> <td><input type="text" name="username"></td> </tr> <tr> <td>性别:</td> <td><input type="radio" name="sex" value="man">男 <input type="radio" name="sex" value="women">女</td> </tr> <tr> <td>爱好:</td> <td><input type="checkbox" name="hobby" value="football">足球 <input type="checkbox" name="hobby" value="basketball">篮球 <input type="checkbox" name="hobby" value="yumao">羽毛球</td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="提交"></td> </tr> </table> </form> |
1.3.获取和访问HTML表单数据
$_GET:是由表单数据构成的数组;这个数组的索引是表单里面的name属性的值。获取到的值是$_GET[“sex”]
$_POST:
<?php $username = $_POST["username"]; $sex = $_POST["sex"]; $hobby = $_POST["hobby"];
echo "我叫" . $username . "," . "性别是:" . $sex . "," . "爱好是:" . $hobby; |
1.4表单数据的处理
刚刚发现,checkbox提交过来的数据里面,如果是多选的还是只显示一个,这个时候我们需要对其数据进行处理。
首先在html中将name属性中的hobby改为数组。代码:
<td><input type="checkbox" name="hobby[]" value="football">足球 <input type="checkbox" name="hobby[]" value="basketball">篮球 <input type="checkbox" name="hobby[]" value="yumao">羽毛球</td> |
因为此处hobby是一个数组,所以我们在接受者个数据的时候,就得以数组的方式去处理数据。
$username = $_POST["username"]; $sex = $_POST["sex"]; $hobby = $_POST['hobby'][0].",".$_POST['hobby'][1].",".$_POST['hobby'][2];
echo "我叫" . $username . "," . "性别是:" . $sex . "," . "爱好是:" . $hobby; |
运行之后报出Notice: Undefined offset: 2
两种方式:
-
在php文件的第一行加入error_reporting(E_ALL^E_NOTICE);
-
在php.ini中加入配置error_reporting = E_ALL^E_NOTICE
1.5验证表单数据
两种方式来验证,一种是同JavaScript方式,在head中插入script代码,另外一种是同提交后的路径中的php来验证。两种方式都可以。
-
Php验证
$username = $_POST["username"]; $sex = $_POST["sex"]; $hobby = $_POST['hobby'][0] . "," . $_POST['hobby'][1] . "," . $_POST['hobby'][2]; if ($username == "") { echo "请输入用户名!"; } else { echo "我叫" . $username . "," . "性别是:" . $sex . "," . "爱好是:" . $hobby; } |
-
JavaScript验证
<script type="text/javascript"> function checkName() { if(document.getElementById("username").value == ""){ alert("用户名为空,请输入用户名!") ; return false; }else{ return true; } } </script> |
此外在form里面加入一个onsubmit事件
<form action="demo1.php" method="post" οnsubmit="return checkName()"> |
1.6php中的session
Session就是指用户进入到网站到浏览器关闭的这段时间,在php中使用session实际上就是通过注册一些session全局变量,然后呢在不同的页面中来使用这些变量。通过session的全局变量就可以完成用户身份验证、页面之间的数据传递等
所以我们要注册一些session变量
语法:
$_SESSION[‘session_name’] = session_value
此外,如果我们要在php中使用session,我们就必须得通过session_star();来表示或者返回一个已经存在的session。这个函数要在浏览器有任何的传出之前调用,也就是说,这个话样放在执行session程序的第一行;
demo_session1.php
<?php session_start();
$_SESSION['username'] = "黄志鹏"; $_SESSION['hello'] = "demo_session1里的session";
echo "本页面已经保存了一些session变量!"; echo '<a href="demo_session2.php">进入下一个页面</a>查看这些变量值!'; |
demo_session2.php
<?php session_start();
echo $_SESSION['username']; echo $_SESSION['hello'];
echo '<a href="demo_session1.php">返回上一个页面</a>'; |
1.7php中的文件上传
在php中一旦要进行文件上传,就必须使用HTTP的POST方式提交数据;并且在表单定义的时候必须加入一个属性enctype=” multipart/form-data
<form enctype="multipart/form-data" action="demo_file2.php" method="post">
上传文件:<input type="file" name="myfile"> <input type="submit" value="立即上传">
</form> |
在php中要进行文件上传的话,要使用到全局变量$_FILES,是一个数组,里面包含了文件的信息:
$_FILES[‘myfile’][‘type’]:表示的上传文件的类型,比如“image/ gif/txt”
$_FILES[‘myfile’][‘size’]:表示上传文件的大小,单位是字节
$_FILES[‘myfile’][‘tmp_name]:表示文件上传后,在服务端上存储的临时文件名;
$_FILES[‘myfile’][‘error’]:表示的是和文件上传相关的错误信息
文件上传提交后,一般要被存储到服务器的默认的临时目录中,可以修改php.ini配置文件中的upload_tmp_dir项,修改为其他路径;
要记住在服务器网站根目录下面新建一个文件夹命名为upload
此时我们要通过move_uploaded_file()将上传的文件移动到指定的目录下;
move_uploaded_file(filename,destination)该函数的返回值是布尔类型。
其中filename指合法的上传文件
Destination移动后的目标文件
<?php $upload_path = $_SERVER['DOCUMENT_ROOT'] . "/upload/"; $dest_file = $upload_path . basename($_FILES['myfile']['name']); echo $_FILES['myfile']['name']; echo "<br>"; echo "<br>"; echo $_FILES['myfile']['type']; echo "<br>"; echo "<br>"; echo $_FILES['myfile']['size']; echo "<br>"; echo "<br>"; echo $_FILES['myfile']['tmp_name']; echo "<br>"; echo "<br>"; if (move_uploaded_file($_FILES['myfile']['tmp_name'], $dest_file)) {
echo "文件已经上传至服务器根目录下的upload文件夹中"; echo "<br>"; echo "<br>"; } else { echo "文件上传中发生一个错误" . $_FILES['myfile']['error']; echo "<br>"; echo "<br>"; } |
2、实践,做一个极为简单的网站
做一个简单的数据录入系统
首先用户提供用户名登录,之后用session维护用户状态。进入系统后,用户可以录入一些个人信息。对应不同的用户有不同的显示效果。
根据要求有三个界面
-
index.php 用户登录界面
-
user.php用户录入信息界面
-
my.php用户个人中心界面