-
因为这里处理的是已经存在的图片,所以可以直接从已存在的图片建立画布,通过imagecreatefromjpeg可以直接从图片文件创建图像。 $im = imagecreatefromjpeg($filename); 创建图像对象以后,我们就可以通过前面的GD函数,绘制字符串到图像上。如果要加的水印是一个logo图片,那么就需要再建立一个图像对象,然后通过GD函数imagecopy将logo的图像复制到源图像中。 $logo = imagecreatefrompng($filename); imagecopy($im, $logo, 15, 15, 0, 0, $width, $height); 当将logo图片复制到原图片上以后,将加水印后的图片输出保存就完成了加水印处理。 imagejpeg($im, $filename);查看全部
-
session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); session_destroy(); 值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。 session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); unset($_SESSION); session_destroy(); var_dump($_SESSION); //此时已为空 如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。查看全部
-
使用session 在PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写。 session_start(); $_SESSION['test'] = time(); var_dump($_SESSION); session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等。 session_start(); $_SESSION['ary'] = array('name' => 'jobs'); $_SESSION['obj'] = new stdClass(); var_dump($_SESSION); 默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其他并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题,这个我们会在一些高级的课程中讲到。查看全部
-
连接MySQL数据库 PHP要对数据库进行操作,首先要做的是与数据库建立连接,通常我们使用mysql_connect函数进行数据库连接,该函数需要指定数据库的地址,用户名及密码。 $host = 'localhost'; $user = 'code1'; $pass = ''; $link = mysql_connect($host, $user, $pass); PHP连接数据库的方式类似于直接在命令行下通过进行连接,类似:mysql -hlocalhost -ucode1 -p,当连接成功以后,我们需要选择一个操作的数据库,通过mysql_select_db函数来选择数据库。 mysql_select_db('code1'); 通常我们会先设置一下当前连接使用的字符编码,一般的我们会使用utf8编码。 mysql_query("set names 'utf8'"); 通过上面的步骤,我们就与数据库建立了连接,可以进行数据操作了。查看全部
-
数据库扩展 PHP中一个数据库可能有一个或者多个扩展,其中既有官方的,也有第三方提供的。像Mysql常用的扩展有原生的mysql库,也可以使用增强版的mysqli扩展,还可以使用PDO进行连接与操作。 不同的扩展提供基本相近的操作方法,不同的是可能具备一些新特性,以及操作性能可能会有所不同。 mysql扩展进行数据库连接的方法: $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password'); mysqli扩展: $link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password'); PDO扩展 $dsn = 'mysql:dbname=testdb;host=127.0.0.1'; $user = 'dbuser'; $password = 'dbpass'; $dbh = new PDO($dsn, $user, $password);查看全部
-
捕获异常信息 在了解了异常处理的基本原理之后,我们可以通过try catch来捕获异常,我们将执行的代码放在try代码块中,一旦其中的代码抛出异常,就能在catch中捕获。 这里我们只是通过案例来了解try catch的机制以及异常捕获的方法,在实际应用中,不会轻易的抛出异常,只有在极端情况或者非常重要的情况下,才会抛出异常,抛出异常,可以保障程序的正确性与安全,避免导致不可预知的bug。 一般的异常处理流程代码为: try { throw new Exception('wrong'); } catch(Exception $ex) { echo 'Error:'.$ex->getMessage().'<br>'; echo $ex->getTraceAsString().'<br>'; } echo '异常处理后,继续执行其他代码';查看全部
-
异常处理类 PHP具有很多异常处理类,其中Exception是所有异常处理的基类。 Exception具有几个基本属性与方法,其中包括了: message 异常消息内容 code 异常代码 file 抛出异常的文件名 line 抛出异常在该文件的行数 其中常用的方法有: getTrace 获取异常追踪信息 getTraceAsString 获取异常追踪信息的字符串 getMessage 获取出错信息 如果必要的话,可以通过继承Exception类来建立自定义的异常处理类。 //自定义的异常类,继承了PHP的异常基类Exception class MyException extends Exception { function getInfo() { return '自定义错误信息'; } } try { //使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。 throw new MyException('error');//这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch" } catch(Exception $e) {//"catch" 代码块会捕获异常,并创建一个包含异常信息的对象 echo $e->getInfo();//获取自定义的异常信息 echo $e->getMessage();//获取继承自基类的getMessage信息 }查看全部
-
删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。 rmdir($dir); 如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。 foreach (glob("*") as $filename) { unlink($filename); }查看全部
-
数组中的key 可以是 integer 或者 string 。value 可以是任意类型。 此外 key 会有如下的强制转换: 1、包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。 2、浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。 3、布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。 4、Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。 5、数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。 所以,array('0'=>'苹果');这种写法不是错误写法 ,系统会自动进行数据类型的强制转换。查看全部
-
<?php //开始使用session session_start(); //设置一个session $_SESSION['test'] = time(); //显示当前的session_id echo "session_id:".session_id(); echo "<br>"; //读取session值 echo $_SESSION['test']; //销毁一个session unset($_SESSION['test']); echo "<br>"; var_dump($_SESSION);查看全部
-
PHP function_exists 判断函数是否存在 method_exists 检测类的方法是否存在 class_exists 检测类是否定义 file_exists 检测文件是否存在查看全部
-
使用function_exists判断一下函数是否存在。同样的method_exists可以用来检测类的方法是否存在。查看全部
-
PHP 内置函数str_replace可以实现字符串的替换。 $str = str_replace('苹果', '香蕉', $str);查看全部
-
cookie的删除与过期时间 通过前面的章节,我们了解了设置cookie的函数,但是我们却发现php中没有删除Cookie的函数,在PHP中删除cookie也是采用setcookie函数来实现。 setcookie('test', '', time()-1); 可以看到将cookie的过期时间设置到当前时间之前,则该cookie会自动失效,也就达到了删除cookie的目的。之所以这么设计是因为cookie是通过HTTP的标头来传递的,客户端根据服务端返回的Set-Cookie段来进行cookie的设置,如果删除cookie需要使用新的Del-Cookie来实现,则HTTP头就会变得复杂,实际上仅通过Set-Cookie就可以简单明了的实现Cookie的设置、更新与删除。 了解原理以后,我们也可以直接通过header来删除cookie。 header("Set-Cookie:test=1393832059; expires=".gmdate('D, d M Y H:i:s \G\M\T', time()-1)); 这里用到了gmdate,用来生成格林威治标准时间,以便排除时差的影响。查看全部
-
BY:Reddington 单引号串和双引号串在PHP中的处理是不相同的。双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。例如: Php代码 代码如下: $foo = 2; echo "foo is $foo"; // 打印结果: foo is 2 echo 'foo is $foo'; // 打印结果: foo is $foo echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) echo 'foo is $foo\n'; // 打印结果: foo is $foo\n $foo = 2; echo "foo is $foo"; // 打印结果: foo is 2 echo 'foo is $foo'; // 打印结果: foo is $foo echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) echo 'foo is $foo\n'; // 打印结果: foo is $foo\n 正如你所看到的,在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\\和插入单引号\')。所以,当你想在字串中进行变量代换和包 含\n(换行符)等转义序列时,你应该使用双引号。单引号串可以用在其他任何地方,脚本中使用单引号串处理速度会更快些,因为PHP语法分析器对单引号串 的处理方式比较单纯,而双引号的处理由于串内部也需要解析,因此更复杂些,所以处理速度略慢。查看全部
举报
0/150
提交
取消