经过接近20天的学习,对php有了初步的了解。在此对php进行一些对php一些小小的总结:
1: PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。学习该语言的前提是对html有一定的了解。
Html部分
(1) 连接 <ahref="http://www.w3school.com.cn">This is a link</a>
(2) 图像 <imgsrc="w3school.jpg" width="104" height="142" />
(3) FORM标签enctype属性 表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,
(4) 上传文件的表单
<form action="index.php" enctype="multipart/form-data"method="post"
name="upform">上传文件: <input name="upfile" type="file"> <input
type="submit" name="submit"value="上传"><br>
</form>
2 php部分
了解了这些就可以为php提供基本的表单了:但是如果想要用php编写网站,还要对php基础语法进行一些了解,当然网上的教程数不胜数,在此我推荐一个网站吧http://www.w3school.com.cn/php/
语法比较全面 基础 对于新手来说还可以看懂,对于高手来说但让会差php手册,但对像我这样的新手来说还是好好 看下教程,再慢慢看php手册把;
谈不上心得,说一下我在自己变成的时候碰到的一些问题,所获得的一些经验吧
(1)变量
刚开始看php的时候给我最大的震惊就是 php里面的变量不需要事先声明就可以直接用,命名规则我没有细看,也许我没有碰到类似的错误,只需要把我们以前的变量前面加一个$符号就可以做php的变量了,类型转换好像也是自动的由低级转换成高级吧,强制类型转换,我目前没用到,其实我还不会。
(2)与其他语言相似部分
每种语言都会有自己的语法规则这是众所周知的 但是 循序结构 选择结构 ifelse switch 循环while for do while foreach 近乎相通 在此就不多做介绍了;
(3)sessioncookie
这个该怎么说那,在java里面应该也有 但是鄙人没有好好学习,不知道在java里面该怎么用的 在这里说一下他们两个的用法 cookie
在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半
自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie
与Session来跟踪和判断。
区别
Session信息是存放在server端,但session id是存放在client cookie的,当然php
的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪
Cookie是完全保持在客户端的如:IEfirefox 当客户端禁止cookie时将不能再使用
具体使用:
由于cookie不是及时生效的,所以我的记住密码的功能没有实现 但是我记住了一句话就是刷新一下就cookie 就能生效了 具体使用以后再讲吧
让我感觉有成就感的就是session了 这个功能我实现了 并且感觉session非常有必有使用,因为有些网页,我们需要有权限才可以进入的 不能还没有登录就对后面的网页增删改查把
如果感觉有必要用到session 就先得调用session_start(); 这个函数
Session的具体操作是这样的
$_SESSION[name]=value; //配置Seeeion
echo $_SESSION[name]; //使用session
isset($_SESSION[name]); // 判断
unset($_SESSION[name]); //删除
session_destroy(); //消耗所有session
在我不会用的时候这些东西我是看不懂得 甚至我不知道什么时候该用到session 在这里我说明一下
就拿简单的登录为例,登录成功跳转的index页面 所以访问 index页面的时候我们需要先进行一个判断 判断是有已经登录 如果没有登录的话就没有权限进行访问该页,或跳转到登录页面 或者退出
下面举例说明
Login.php
session_start (); //把session打开
if ($_POST ["username"] && $_POST ["password"]) { //判断有没有传值过来
$_SESSION ["id"] = $_POST ["username"]; //给session赋值
$_SESSION ["psw"] = $_POST ["password"];
}
Index.php
<?php
session_start ();
if ($_SESSION ['id'] == "") { //如果session的值为空的话,则证明没有登录
echo "请先登录";
header ( 'Location:biaodan.php');//跳转到登录页面
} else {
echo $_SESSION ['id'];
echo "welcom";
}
?>
(4)php与mysql
Mysql的简介我就不说了,众所周知,几乎所有语言都会用到连接数据库,对数据库进行一系列的操作,php也不例外,但是我感觉php连接数据库是我见到的最简单的 因为不需要加载任何驱动 只是几个函数而已;
<1>连接到一个mysql数据库
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// some code
?>
<2>关闭连接 //切记 如果不关的话 貌似会浪费资源 我就经常忘记
mysql_close($con);
<3>接下来就是对数据库的增删改查
查询:下面代码是我登陆界面用到的代码,希望能给大家带来点帮助
$con = mysql_connect ( "localhost", "root", "123" );
if (! $con) {
die ( 'could notconnect' . mysql_error () );
}
mysql_select_db ( "zuoye", $con );
$strSql = "select * from user where username='$_POST[username]' and password='$_POST[password]'";
$result = mysql_query ( $strSql ) or die(mysql_error());
if (! $result) {
echo "登陆失败";
//exit ();
}
$num = mysql_num_rows ( $result );
if ($num > 0) {
header ( 'Location:index.php' );
} else {
echo "用户名密码错误";
echo "用户名密码错误";
}
这里用到了一个函数是mysql_query();mysql_query()仅对 SELECT,SHOW,EXPLAIN或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。 具体的参看手册 这个是别人告诉我的 我貌似也没有看懂 但是我已经实现了查询表中数据 贴出代码一看
$con = mysql_connect ( "localhost", "root", "123" );
if (! $con) {
die ( 'could notconnect' . mysql_error () );
}
mysql_select_db ( "zuoye", $con );
$st="selectpic_url from user where username='" . $_SESSION ['id'] . "'";
$tu=mysql_query($st);
$r=mysql_fetch_array($tu);
echo "" . $r['pic_url'] . "'";
具体原理大家探讨
Update insert delete 大家应该都明白的差不多了
<3>文件上传
$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 储存的临时文件名,一般是系统默认。
$_FILES['myFile']['error'] 该文件上传相关的错误代码
这是我写的图片上传的例子,大家一起来探讨
if (isset ( $_POST ["submit"] )) {
if (is_uploaded_file ( $_FILES ["upfile"] ["tmp_name"] )) {
$upfile = $_FILES ["upfile"];
$name = $upfile ["name"];
$type = $upfile ["type"];
$size = $upfile ["size"];
$tmp_name = $upfile ["tmp_name"];
$error = $upfile ["error"];
switch ($type) {
case 'image/pjpeg' :
$ok = 1;
break;
case 'image/jpeg' :
$ok = 1;
break;
case 'image/gif' :
$ok = 1;
break;
case 'image/png' :
$ok = 1;
break;
}
if ($ok && $error == '0') {
move_uploaded_file ( $tmp_name, 'up/' . $name );
// 将文件名保存到数据库
// 数据库链接部分,自行修正完整
$con = mysql_connect ( "localhost", "root", "123" );
if (! $con) {
die ( 'could notconnect' . mysql_error () );
}
mysql_select_db ( "zuoye", $con );
//更新数据库字段img 查询条件 用户id
$SQL = "UPDATE user SET `pic_url`='{$name}' where username='" . $_SESSION ['id'] . "'";
mysql_query ( $SQL );
if (mysql_affected_rows () > 0) {
echo "<img src='" . 'up/' . $name . "' width='104' height='50'/>";
echo "上传头像数据更新成功";
echo "$name.<br/>";
echo "$type.<br/>";
echo "$size.<br/>";
echo "$tmp_name.<br/>";
} else {
echo '数据更新失败';
}
在本目录下建一个up文件夹 上传的图片会移动到那里 数据库里存的是文件名
move_uploaded_file ( $tmp_name,'up/' . $name );
这个函数就是移动文件的
<4>验证吗
验证码是为了防止 被一些恶意程序 恶意注册 现在几乎所有的网站都可以见到验证码了
如果要php生成图片需要启用一个GD库
;extension=php_gd2.dll
打开php.ini文件 找到上面这段代码 把前面的分号去掉就启用了GD 库
由于环境不一样 急用的方式也各有不同 网上都有的 百度谷歌一下就知道了
用到的函数
1、 imagecreatetruecolor 新建一个真彩色图像
imagecreatetruecolor ( int x_size, int y_size) // x就是宽 ,y就是高
2、imagecolorallocate 为一幅图像分配颜色(调色板)
imagecolorallocate ( resource image, int red, int green, int blue )
3、imagestring 绘图函数
imagestring ( resource image, font, int x,int y, 内容 , 颜色 )
由于是制作验证码 所以用到了随即函数
1 、rand 随机函数
rand ( [int min, int max] )
2、dechex 十进制转换为十六进制
dechex ( 十进制数 )
我做的验证码的例子
<?php
//echo "abc2";
//exit();
session_start();
for ($i=0;$i<4;$i++)
{
$s.=dechex(rand(1, 15));
}
$_SESSION[pic]=$s;
$im=imagecreatetruecolor(100,30);
$bg=imagecolorallocate($im,rand(0, 255), rand(0, 255), rand(0, 255));
$te=imagecolorallocate($im,rand(0, 255), rand(0, 255), rand(0, 255));
imagestring($im, rand(1,6),rand(3, 70), rand(0, 16), "$s", $te);
ob_clean();
header("Content-type: image/jpeg");
imagejpeg($im);
?>
总结 都说php简单 比起其他语言来说他真的挺简单的 但是如果想写出一个好的网页还有有思想 勤动手才可以成为一个php程序员