PHP程序员笔试与面试题分享

 更新时间:2016年11月25日 15:00  点击:1515
本文章来给各位同学总结了一些PHP程序员笔试与面试题分享,如果你准备去面试php程序员不防先看看这些题目哦。

普通PHP程序员笔试题
标签:  程序员  PHP  面试  2009-02-06 15:19
1. 用PHP打印出前一天的时间,打印格式是2007年5月10日 22:21:21
2. PHP代码如下:
$a="hello";
$b=&$a;
unset($b);
$b="world";
echo $a;
其结果是?
3. PHP代码如下:
$str="cd";
  $$str="landog"; 
$$str.="ok";
echo $cd;
其结果是?
4. 用PHP写一段代码,实现不使用第3个变量,交换$a、$b的值,$a、$b的初始值自己定。
5. 根据题目要求,用PHP写出代码。
表名User
ID  Name   Tel         Content   Date
1   张三 13333663366  大专毕业  2006-10-11
3   张三 13612312331  本科毕业  2006-10-15
5   张四 020-5566556  中专毕业  2006-10-15
4   王五 13521212125  大专毕业   2006-12-25
2   …………
6   …………
假设数据库连接如下:
$mysql_db=mysql_connect("local","root","pass");
@mysql_select_db("DB",$mysql_db);
(1)查询出所有Name等于“张三”的记录,并输出。
(2)按ID升序查询,只返回排序后的前3条记录,并输出。
6. javascript能否定义二维数组,如果不能你如何解决?
7. 假设a.html和b.html在同一个文件夹下面,用javascript实现当打开a.html五秒钟后,自动跳转到b.html。
8. 有两个文件a.html和a.php,代码如下:
a.html

<html>
<head>
  <meta http-equiv=Content-Type content=text/html;charset=utf-8>
  <title>PHP程序员面试</title>
</head>
<body>
  <center>
   <form method="post" action="a.php">
    <table border="1">
     <tr>
      <td align="right">姓名:</td>
      <td align="left"><input type="text" ></td>
     </tr> 
     <tr>
      <td align="right">电话:</td>
      <td align="left"><input type="text" ></td> 
     </tr>
     <tr>
      <td align="right">邮箱:</td>
      <td align="left"><input type="text" ></td>
     </tr>
     <tr>
      <td align="right">地址:</td>
      <td align="left"><input type="text" ></td> 
     </tr>
     <tr>
      <td align="center" colspan="2">
       <input type="submit" value="提交">
       <input type="reset" value="重填">
      </td> 
     </tr>
    </table>
   </form>
  </center>
</body>
</html>


a. php

<?php
     $user_name = $_GET['user_name'];
     $user_tel = $_GET['user_tel'];
     $user_email = $_GET['user_email'];
     $user_add = $_GET['user_add'];
     echo "用户名:$user_name<br>电话:$user_tel<br>邮箱:$user_email<br>地址:$user_add<br>";
?>


(1)请画出a.html在浏览器的显示效果图。
(2)在a.html中输入:用户名=张三,电话=020-38259977,邮箱=sunrising@srtek.cn,地址=广州升瑞,按提交按钮后输出结果是?
9. 你是否使用过版本控制工具,如果有,请简要说明。
10. 利用CSS样式表定义已访问的超链接字体大小为14pt,颜色为red。
11. 移动任意一位数或符号,使等式成立, 102 = 101-1。注:是移动不是交换,等号不能分开。
12. 规律题,3、1、4、1、5、9、2、(  ), 请按照规律在括号内写出下一表达式。
13. 规律题,5、8、-3、5、-2、3、-1、(  ),请按照规律在括号内写出下一表达式。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
答案:

1. echo date('Y-m-d H:i:s', strtotime('-1 day'));

2. hello

3. landogok

4.  $a = "abcd";
$b = "1234";
echo "初始化时 a=$a,b=$b<br>";
$a = $a . $b;
$b = strlen( $b );
$b = substr( $a, 0, (strlen($a) - $b ) );
$a = substr( $a, strlen($b) );
echo "交换后 a=$a,b=$b<br>";

5. (1)$sql = “select *  from User where >  $result = mysql_query( $sql );
  while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ){
   echo $row[‘Name’];
  }
(2) $sql = “select * from User order by ID asc limit 0,3”;
  $result = mysql_query( $sql );
  while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ){
   echo $row[‘Name’];
  }
6. javascript不支持二维数组定义,可以用arr[0] = new array()来解决

7. javascript代码如下:
<script>
function go2b(){
  window.location = "b.html";
  window.close();
}
setTimeout( "go2b()",5000 ); //5秒钟后自动执行go2b()
</script>

8.

(1)如下所示:

      略。因为懒得插入图片,如果想看结果可以把代码保存为html文件,再用浏览器打开查看。

(2)输出结果应为:

      姓名:

      电话:

      邮箱:

      地址:

因为表单是用post方式提交,但在a.php中却用get方式来读取,所以不会读到任何值。

9. 略

10.   a:visited { font-size: 14pt; color: red; }

11.  102 = 101-1 

12. 答案为6,因为∏=3.1415926

13. 答案为2,规律为n=(n-2) – |(n-1)| ,n>=3

1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中 <?php
//本页地址,SCRIPT_NAME也可以:php/test.php
echo $_SERVER['PHP_SELF']."<br />";
//链接到当前页面的前一页面的 URL 地址:
echo $_SERVER['HTTP_REFERER']."<br />";
//其它的见参考手册:语言参考》变量》预定义变量
//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php
echo $_SERVER["SCRIPT_FILENAME"]."<br />";
//正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"]."<br />";
//查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2
echo $_SERVER["QUERY_STRING"]."<br />";
//当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"]."<br />";
?>

2.执行程序段<?php echo 8%(-2) ?>将输出__。
<?php
//参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0
echo 8%(-2)."<br />";
//取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2
echo ((-8)%3)."<br />";
//输出2
echo (8%(-3))."<br />";
?>
3.在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到文件”的提示,则可用 header 函数,其语句为____。
答:401表示未授权;header("HTTP/1.0 404 Not Found");[见参考手册》函数参考》HTTP函数》header]
4.数组函数 arsort 的作用是____;语句 error_reporting(2047)的作用是____。
答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的作用是:report All errors and warnings
5.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):
<?php
$script="以下内容不显示:<script language='javascript'>alert('cc');</script>";
echo preg_replace("/<script[^>].*?>.*?</script>/si", "替换内容", $script);
?>
6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,
然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
答:LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php
见参考手册》目录》II. 安装与配置》6. Windows 系统下的安装》Microsoft Windows 下的 Apache 2.0.x
7.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。
答:在如何处理失败时,include() 产生一个警告而 require() 则导致一个致命错误;require_once()/include_once()
8.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.
答:allow_call_time_pass_reference boolean :是否启用在函数调用时强制参数被按照引用传递, 见参考手册》附录G
9.SQL 中LEFT JOIN的含义是__,如果 tbl_user记录了学生的姓名(name)和学号(ID),
tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____.
答:自然左外连接
create database phpinterview;
use phpinterview
create table tbl_user
(
    ID                             int                            not null,
    name                           varchar(50)                    not null,
   primary key (ID)
);
create table tbl_score
(
    ID                             int                            not null,
    score                          dec(6,2)                       not null,
    subject                        varchar(20)                    not null
);
insert into tbl_user (ID, name) values (1, 'beimu');
insert into tbl_user (ID, name) values (2, 'aihui');
insert into tbl_score (ID, score, subject) values (1, 90, '语文');
insert into tbl_score (ID, score, subject) values (1, 80, '数学');
insert into tbl_score (ID, score, subject) values (2, 86, '数学');
insert into tbl_score (ID, score, subject) values (2, 96, '语文');
select A.id,sum(B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id
10. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____
答:结束标识符所在的行不能包含任何其它字符除";"
11.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
<?php
function my_scandir($dir)
{
    $files=array();
    if(is_dir($dir))
     {
        if($handle=opendir($dir))
         {
            while(($file=readdir($handle))!==false)
             {
                if($file!="." && $file!="..")
                 {
                    if(is_dir($dir."/".$file))
                     {
                        $files[$file]=my_scandir($dir."/".$file);
                     }
                    else
                     {
                        $files[]=$dir."/".$file;
                     }
                 }
             }
            closedir($handle);
            return $files;
         }       
     }   
}
print_r(my_scandir("D:Program FilesInternet ExplorerMUI"));
?>


1.以下哪一句不会把 John 新增到 users 阵列?
$users[] = 'john';
成功把 John 新增到阵列 users。
array_add($users,’john’);
函式 array_add() 无定义。
array_push($users,‘john’);
成功把 John 新增到阵列 users。
$users ||= 'john';
语法错误。
2.sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?
sort()
根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。
assort()
PHP 没有 assort() 函式,所以可能是 asort() 的笔误。
asort()
与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。
ksort()
根据阵列中索引键的值,以英文字母顺序排序,特别适合用于希望把索引键排序的联想阵列。
3.以下的代码会产生什么?为什么?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
由于函式 multiply() 没有指定 $num 为全域变量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。
4. reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?
Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。
一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。

$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 传送参数以 reference 传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。
5.些函式可以用来在现正执行的脚本中插入函式库?
对这道题目不同的理解会有不同的答案,我的第一个想法是插入 PHP 函式库不外乎 include()、include_once()、require()、require_once(),但细心再想,“函式库”也应该包括 com 物件和 .net 函式库,所以我们的答案也要分别包括 com_load 和 dotnet_load,下次有人提起“函式库”的时候,别忘记这两个函式。
6.foo() 与 @foo() 有什么分别?
foo() 会执行这个函式,任何解译错误、语法错误、执行错误都会在页面上显示出来。
@foo() 在执行这个函式时,会隐藏所有上述的错误讯息。
很多应用程式都使用 @mysql_connect() 和 @mysql_query 来隐藏 mysql 的错误讯息,我认为这是很严重的失误,因为错误不该被隐藏,你必须妥善处理它们,可能的话解决它们。
7.你如何替 PHP 的应用程式侦错?
我并不常这样做,我曾经试过很多不同的侦错工具,在 Linux 系统中设定这些工具一点也不容易。不过以下我会介绍一个近来颇受注目的侦错工具。
PHP - Advanced PHP Debugger 或称 PHP - APD,第一步是执行以下的指令安装:
pear install apd安装后在你的脚本的开头位置加入以下的语句开始进行侦错:
apd_set_pprof_trace();执行完毕,打开以下档案来查阅执行日志:
apd.dumpdir
你也可以使用 pprofp 来格式化日志。
详细的资料可以参阅 http://us.php.net/manual/en/ref.apd.php。
8.“===”是什么?试举一个“==”是真但“===”是假的例子。
“===”是给既可以送回布尔值“假”,也可以送回一个不是布尔值但却可以赋与“假”值的函式,strpos() 和 strrpos() 便是其中两个例子。
问题的第二部份有点困难,想一个“==”是假,但是“===”是真的例子却很容易,相反的例子却很少。但我终于找到以下的例子:
if (strpos("abc", "a") == true){    // 这部分永不会被执行,因为 "a" 的位置是 0,换算成布尔值“假”}if (strpos("abc", "a") === true){    // 这部份会被执行,因为“===”保证函式 strpos() 的送回值不会换算成布尔值.}
9.你会如何定义一个没有成员函式或特性的类别 myclass?
class myclass{}
10.你如何产生一个 myclass 的物件?
$obj = new myclass();
11.在一个类别内如何存取这个类别的特性及变改它的值?
使用语句:$this->propertyName,例如:
class myclass{ private $propertyName; public function __construct() {   $this->propertyName = "value"; }}
12.include 和 include_once 有什么分别?require 又如何?
三者都是用来在脚本中插入其他档案,视乎 url_allow_fopen 是否核准,这个档案可以从系统内部或外部取得。但他们之间也有微细的分别:
include():这个函式容许你在脚本中把同一个档案插入多次,若果档案不存在,它会发出系统警告并继续执行脚本。
include_once():它跟 include() 的功能相似,正如它的名字所示,在脚本的执行期间,有关档案只会被插入一次。
require():跟 include() 差不多,它也是用来在脚本中插入其他档案,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本中止执行
13.以下哪一个函式可以把浏览器转向到另一个页面?
redir()
这不是一个 PHP 函式,会引致执行错误。
header()
这个是正确答案,header() 用来插入卷头资料,可以用来使浏览器转向到另一个页面,例如:
header("Location: http://www.search-this.com/");
location()
这不是一个 PHP 函式,会引致执行错误。
redirect()
这不是一个 PHP 函式,会引致执行错误。

14.以下哪一个函式可以用来开启档案以便读/写?
fget()
这不是一个 PHP 函式,会引致执行错误。
file_open()
这不是一个 PHP 函式,会引致执行错误。
fopen()
这是正确答案,fopen() 可以用来开启档案以便读/写,事实上这个函式还有很多选项,详细资料请参阅 php.net。
open_file()
这不是一个 PHP 函式,会引致执行错误。
15.mysql_fetch_row() 和 mysql_fetch_array() 有什么分别?
mysql_fetch_row() 把数据库的一列储存在一个以零为基数的阵列中,第一栏在阵列的索引 0,第二栏在索引 1,如此类推。mysql_fetch_assoc() 把数据库的一列储存在一个关联阵列中,阵列的索引就是栏位名称,例如我的数据库查询送回“first_name”、“last_name”、 “email”三个栏位,阵列的索引便是“first_name”、“last_name”和“email”。mysql_fetch_array() 可以同时送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。
16.下面的代码用来做什么?请解释。
$date='08/26/2003';print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","[url=file://2///1///3%22,$date]\2/\1/\3",$date[/url]);
这是把一个日期从 MM/DD/YYYY 的格式转为 DD/MM/YYYY 格式。我的一个好朋友告诉我可以把这个正规表达式拆解为以下的语句,对于如此简单的表示是来说其实无须拆解,纯粹为了解说的方便:
// 对应一个或更多 0-9,后面紧随一个斜号$regExpression = "([0-9]+)/";// 应一个或更多 0-9,后面紧随另一个斜号$regExpression .= "([0-9]+)/";// 再次对应一个或更多 0-9$regExpression .= "([0-9]+)";至于 [url=file://2///1///3]\2/\1/\3[/url] 则是用来对应括号,第一个括号对的是月份,第二个括号对应的是日期,第三个括号对应的是年份。
17.给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?
首先,PHP 有内建函式 strip_tags() 除去 HTML 标签,为何要自行编写正规表达式?好了,便当作是面试的一道考题吧,我会这样回答:
$stringOfText = "<p>This is a test</p>";$expression = "/<(.*?)>(.*?)</(.*?)>/";echo preg_replace($expression, "[url=file://2/]\2[/url]", $stringOfText);// 有人说也可以使用 /(<[^>]*>)/ $expression = "/(<[^>]*>)/";echo preg_replace($expression, "", $stringOfText);
18.PHP 和 Perl 分辨阵列和散列表的方法有什么差异?
这正是为何我老是告诉别人选择适当的编程语言,若果你只用一种语言的话你怎么能回答这道问题?这道问题很简单,Perl 所有阵列变量都是以 @ 开头,例如 @myArray,PHP 则沿用 $ 作为所有变量的开头,例如 $myArray。
至于 Perl 表示散列表则用 %,例如 %myHash,PHP 则没有分别,仍是使用 $,例如 $myHash。
19.你如何利用 PHP 解决 HTTP 的无状态本质?
最主要的俩各选择是 session 和 cookie。使用 session 的方法是在每一页的开始加上 session_start(),然后利用 $_SESSION 散列表来储存 session 变量。至于 cookie 你只需记着一个原则:在输出任何文字之前调用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 变量。
还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。
20.GD 函式库用来做什么?
这个可能是我最喜欢的函式库,自从 PHP 4.3.0 版本后 GD 便内建在 PHP 系统中。这个函式库让你处理和显示各式格式的图档,它的另一个常见用途是制作所图档。GD 以外的另一个选择是 ImageMagick,但这个函式库并不内建于 PHP 之中,必须由系统管理员安装在伺服器上。
21.试写出几个输出一段 HTML 代码的方法。
嗯,你可以使用 PHP 中任何一种输出语句,包括 echo、print、printf,大部分人都使用如下例的 echo:
echo "My string $variable";你也可以使用这种方法:
echo <<<ENDThis text is written to the screen as output and this $variable is parsed too. If you wanted you can have <span> HTML tags in here as well.</span> The END; remarks must be on a line of its own, and can't contain any extra white space.END;
22.PHP 比 Perl 好吗?请讨论。
我们不要为一个简单的问题引发一场舌战,正如我经常说的:“为工作选择适合的语言,不要把工作迁就语言。”我个人认为 Perl 十分适合用作命令行工具,虽然它在网页应用上也有不错的表现,但是它的真正实力在命令行上才能充分发挥。同样地,PHP 虽然可以在控制台的环境中使用,但是个人认为它在网页应用上有更好的表现,PHP 有大量专门为网页应用而设计的函式,Perl 则似乎以命令行为设计之本。
个人来说两种语言我都喜欢,在大学期间我经常使用 Perl、PHP 和 Java,可惜工作上我使用 C#,但在家里我花不少时间操练 PHP、Perl、Ruby(现正学习)和 Java,保持我的技能知识在最新状态。很多人问我 C 和 C++ 怎么样,它们是否仍有机会在我的应用中占一席位,我的答案基本上是“否”,我近来的工作主要集中在网页开发,虽然 C 和 C++ 也可以用来写网页,但它们到底不是为这种工作而设计的,“为工作选择适合的语言”,若果我需要编写一个控制台应用,用来展示 bubble sort、quick sort 和 merge sort 的效能比较,我一定会使用 C / C++。若果我需要编写一个相片簿系统,我会使用 PHP 或者 C#(我认为制作用户介面方面 .NET 语言比网页更加)。

PHP经典面试题(连载4)
1 请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
   答: 传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。
2 在PHP中error_reporting这个函数有什么作用?
   答: The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script.
3 请用正则表达式(Regular Expression)写一个函数验证电子邮件的格式是否正确。
答:
<?php
if(isset($_POST['action']) &&
$_POST['action']=='submitted')
{
    $email=$_POST['email'];
    if(!preg_match("/^(?:w+.?)*w+@(?:w+.?)*w+$/",$email))
     {
        echo
"电子邮件检测失败";
     }
    else
     {
        echo
"电子邮件检测成功";
     }
}
else
{
?>
<html>
<head><title>EMAIL检测</title>
<script type="text/javascript">
function checkEmail(sText)
     {
        var reg=/^(?:w+.?)*w+@(?:w+.?)*w+$/;
        var email=document.getElementById(sText).value;
        if(!reg.test(email))
         {
             alert("电子邮件检测失败");
         }
        else
         {
             alert("电子邮件格式正确");
         }
     }
</script>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
电子邮件:<input type="text" id="email" name="email"
/><br />
<input type="hidden" name="action" value="submitted"
/>
<input type="button" name="button" value="客户端检测" onclick="checkEmail('email')"
/>
<input type="submit" name="submit" value="服务器端检测"
/>
</form>
</body>
</html>
<?php
}
?>

4 简述如何得到当前执行脚本路径,包括所得到参数。
 <?php
 echo
"http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
 //echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
 ?>

5 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)

 <?php
 function BubbleSort(&$arr)
 {
     $cnt=count($arr);
     $flag=1;
     for($i=0;$i<$cnt;$i++)
      {
         if($flag==0)
          {
             return;
          }
         $flag=0;
         for($j=0;$j<$cnt-$i-1;$j++)
          {
             if($arr[$j]>$arr[$j+1])
              {
                 $tmp=$arr[$j];
                 $arr[$j]=$arr[$j+1];
                 $arr[$j+1]=$tmp;
                 $flag=1;
              }
          }
      }
 }
 $test=array(1,3,6,8,2,7);
 BubbleSort($test);
 var_dump($test);
 ?>


6 请举例说明在你的开发过程中用什么方法来加快页面的加载速度
   答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

 

在php中设置session有很多方面包有给session设置值或直接设置过期,失效和有效期,下面小编来给大家给各位朋友介绍怎么使用。

我们先来看看在php.ini中session怎么设置

打开 php.ini ,查找Session设置部分中以下一项:

 代码如下 复制代码

session.save_path = "N;/path"
session.save_path = "C:/Temp"  #此处以你自己设定的路径为准


这项设置提供给我们可以给session存放目录进行多级散列,其中“N”表示要设置的目录级数,后面的“/path”表示session文件存放的根目录路径,比如我们设置为下面的格式

 代码如下 复制代码

 session.save_path = "2;C:/Temp"

上面的设置表示我们把php的session文件进行两级目录存储,每一级目录分别是0-9和a-z共36个字母数字为目录名,这样存放session的目录可以达到36*36个,共1332个文件夹,相信作为单台服务器来说,这是完全够用了,如果说您的系统架构设计为多台服务器共享session数据,可以把目录级增加到3级或者更多。

Session过期时间设定


继续PHP中的Session话题,在PHP中主要通过设置session.gc_maxlifetime来设定Session的生存周期。例如:

 代码如下 复制代码

<?php
ini_set('session.gc_maxlifetime', 3600); //设置时间
ini_get('session.gc_maxlifetime');//得到ini中设定值
?>

下面提供一个别人封装好的函数,但是我没有测试过,仅供参考:

 代码如下 复制代码

<?php
function start_session($expire = 0)
{
    if ($expire == 0) {
        $expire = ini_get('session.gc_maxlifetime');
    } else {
        ini_set('session.gc_maxlifetime', $expire);
    }

    if (empty($_COOKIE['PHPSESSID'])) {
        session_set_cookie_params($expire);
        session_start();
    } else {
        session_start();
        setcookie('PHPSESSID', session_id(), time() + $expire);
    }
}
?>

使用方法:

加入start_session(600);//600秒以后过期。


session永不过期的方法


打开php.ini设置文件

修改三行如下:

1、session.use_cookies
把这个的值设置为1,利用cookie来传递sessionid

2、session.cookie_lifetime
这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以PHP的session不能永久使用! 那么我们把它设置为一个我们认为很大的数字吧,999999999怎么样,可以的!就这样。

3、session.gc_maxlifetime
这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除! 那么我们也把它设置为99999999。

就这样一切ok了,当然你不相信的话就测试一下看看——设置一个session值过个10天半个月的回来看看,如果你的电脑没有断电或者宕机,你仍然可以看见这个sessionid。

当然也可能你没有控制服务器的权限并不能像我一样幸运的可以修改php.ini设置,一切依靠我们自己也是有办法的,当然就必须利用到客户端存储cookie了,吧得到的sessionID存储到客户端的cookie里面,设置这个cookie的值,然后把这个值传递给session_id()这个函数,具体做法如下:

 

 代码如下 复制代码

session_start(); // 启动Session
$_SESSION['count']; // 注册Session变量Count
isset($PHPSESSID)?session_id($PHPSESSID):$PHPSESSID = session_id();
// 如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID,否则生成SessionID

$_SESSION['count']++; // 变量count加1
setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // 储存SessionID到Cookie中
echo $count; // 显示Session变量count的值
?>

在php中cookie与其它程序中没什么两样,cookie都是用来存储信息到客户端,常用用于安全性要求不高的一些应用中,如用户登录记住密码之类的,下面我来给大家介绍一下php cookie学习笔记。

PHP setcookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。cookie 的名称指定为相同名称的变量。例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值。

必须在任何其他输出发送前对 cookie 进行赋值。如果成功,则该函数返回 true,否则返回 false。

1 setcookie(name, value, expire, path, domain, secure)
•name 必需。规定 cookie 的名称。
•value 必需。规定 cookie 的值。
•expire 可选。规定 cookie 的有效期。
•path 可选。规定 cookie 的服务器路径。
•domain 可选。规定 cookie 的域名。
•secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。
可以通过 $HTTP_COOKIE_VARS["user"] 或 $_COOKIE["user"] 来访问名为 "user" 的 cookie 的值。在发送 cookie 时,cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。如果你不需要这样,可以使用 setrawcookie() 代替。

例,php设置和获取cookie

 代码如下 复制代码

setcookie('mycookie','value');

//函数原型:int setcookie(string name,string value,int expire,string path,string domain,int secure)
echo($mycookie);
echo($HTTP_COOKIE_VARS['mycookie']);
echo($_COOKIE['mycookie']);

删除Cookie

(1)调用只带有name参数的setcookie();
(2)使失效时间为time()或time-1;

 代码如下 复制代码

<?php setcookie('name'); ?>

setcookie('mycookie');或setcookie('mycookie','');或setcookie("mycookie",false);
//setcookie('mycookie','',time()-3600);
echo($HTTP_COOKIE_VARS['mycookie']);
print_r($_COOKIE);

建议删除方法:

 代码如下 复制代码

setcookie('mycookie','',time()-3600);

PHP提供一个很好用的函数mktime()。
你只要按顺序传送给mktime()你希望表示的小时,分钟,秒数,月份,日期,及年份,
mktime()就会返回该日期自1970年1月1日的总秒数。
因此,如果需要模拟 Y2K 问题:

 代码如下 复制代码

$y2k = mktime(0,0,0,1,1,2000);
setcookie('name','value',$y2k);
setcookie('name', 'value', time+3600);
setcookie('name', 'value', $y2k, '~/myhome', '.domain.com');

获取COOKIE过期时间的办法

 代码如下 复制代码

$expire = time() + 86400; // 设置24小时的有效期
setcookie ("var_name", "var_value", $expire); // 设置一个名字为var_name的cookie,并制定了有效期
setcookie ("var_name_expire", $expire, $expire); // 再将过期时间设置进cookie以便你能够知道var_name的过期时间

注:

在发送 cookie 时,cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。
如果你不需要这样,可以使用 setrawcookie() 代替。


例,cookie来保存用户登录信息


1、数据库连接配置页面:connectvars.php

 代码如下 复制代码

<?php
//数据库的位置
define('DB_HOST', 'localhost');
//用户名
define('DB_USER', 'root');
//口令
define('DB_PASSWORD', '19900101');
//数据库名
define('DB_NAME','test') ;
?>


2、登录页面:logIn.php

 代码如下 复制代码

<?php
//插入连接数据库的相关信息
require_once 'connectvars.php';

$error_msg = "";
//判断用户是否已经设置cookie,如果未设置$_COOKIE['user_id']时,执行以下代码
if(!isset($_COOKIE['user_id'])){
    if(isset($_POST['submit'])){//判断用户是否提交登录表单,如果是则执行如下代码
        $dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
        $user_username = mysqli_real_escape_string($dbc,trim($_POST['username']));
        $user_password = mysqli_real_escape_string($dbc,trim($_POST['password']));

        if(!empty($user_username)&&!empty($user_password)){
            //MySql中的SHA()函数用于对字符串进行单向加密
            $query = "SELECT user_id, username FROM mismatch_user WHERE username = '$user_username' AND "."password = SHA('$user_password')";
            //用用户名和密码进行查询
            $data = mysqli_query($dbc,$query);
            //若查到的记录正好为一条,则设置COOKIE,同时进行页面重定向
            if(mysqli_num_rows($data)==1){
                $row = mysqli_fetch_array($data);
                setcookie('user_id',$row['user_id']);
                setcookie('username',$row['username']);
                $home_url = 'loged.php';
                header('Location: '.$home_url);
            }else{//若查到的记录不对,则设置错误信息
                $error_msg = 'Sorry, you must enter a valid username and password to log in.';
            }
        }else{
            $error_msg = 'Sorry, you must enter a valid username and password to log in.';
        }
    }
}else{//如果用户已经登录,则直接跳转到已经登录页面
    $home_url = 'loged.php';
    header('Location: '.$home_url);
}
?>
<html>
    <head>
        <title>Mismatch - Log In</title>
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <h3>Msimatch - Log In</h3>
        <!--通过$_COOKIE['user_id']进行判断,如果用户未登录,则显示登录表单,让用户输入用户名和密码-->
        <?php
        if(empty($_COOKIE['user_id'])){
            echo '<p class="error">'.$error_msg.'</p>';
        ?>
        <!-- $_SERVER['PHP_SELF']代表用户提交表单时,调用自身php文件 -->
        <form method = "post" action="<?php echo $_SERVER['PHP_SELF'];?>">
            <fieldset  style="width:250px;">
                <legend>Log In</legend>

                <label for="username">Username:</label>
                <!-- 如果用户已输过用户名,则回显用户名 -->
                <input type="text" id="username" name="username"
                value="<?php if(!empty($user_username)) echo $user_username; ?>" />
                <br/>
                <label for="password">Password:</label>
                <input type="password" id="password" name="password"/>
            </fieldset>   
            <br/>
            <input type="submit" value="Log In" name="submit"/>
        </form>
        <?php
        }
        ?>
    </body>
</html>

3、登入页面:loged.php

 

 代码如下 复制代码
<?php
//已登录页面,显示登录用户名
if(isset($_COOKIE['username'])){
    echo 'You are Logged as '.$_COOKIE['username'].'<br/>';
    //点击“Log Out”,则转到logOut.php页面进行cookie的注销
    echo '<a href="logOut.php"> Log Out('.$_COOKIE['username'].')</a>';
}
/**在已登录页面中,可以利用用户的cookie如$_COOKIE['username']、
 * $_COOKIE['user_id']对数据库进行查询,可以做好多好多事情*/
?>

4、注销cookie页面:logOut.php(注销后重定向到lonIn.php)

 

 代码如下 复制代码
<?php
/**cookies注销页面*/
if(isset($_COOKIE['user_id'])){
    //将各个cookie的到期时间设为过去的某个时间,使它们由系统删除,时间以秒为单位
    setcookie('user_id','',time()-3600);
    setcookie('username','',time()-3600);
}
//location首部使浏览器重定向到另一个页面
$home_url = 'logIn.php';
header('Location:'.$home_url);
?>

最后总结三点,大家必须留意

1: 设置cookie时的注意事项

在同一个页面中设置cookie,实际上是按从后往前的顺序进行的.如果要先删除一个cookie,再写入一个cookie,则必须先写写入语句,再写删除语句.否则会出现错误.

2: setcookie举例

简单的: setcookie("mycookie","value_of_mycookie");
带失效时间的: setcookie("withExpire","Expire_in_1_hour",time()+3600);
什么都有的:setcookie("FullCookie","Full_cookie_value",time+3600,"/forum","www.111cn.net",1);

3: cookie的一些特点

cookie是面向路径的.缺省path属性时,WEB服务器页会自动传递当前路径给浏览器.指定路径会强制服务器使用设置的路径.
在一个目录页面里设的cookie在另一个目录的页面里是看不到的.

Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。

使用PHP应用session时,将session中的数据存储在服务器上,然后通过客户端传来的sessionID识别客户端的信息,并提取信息。

自己的一个实例

 代码如下 复制代码

<?php
session_start();//启动会话session,在session必须启动
$_SESSION['name']=”fangshan”;//设置session,name的值为fangshan
?>
<a href=”session2.php”>next</a>

(以上另存为session.php)

<?php
session_start();//启动会话
if(isset($_SESSION['name']))//判断是否存在
{
 echo $_SESSION['name'];
 echo “<a href=”deletesession.php”>del session</a>”;
}
else
{
 echo “Session has not been setted”;
}
?>

(以上另存为session2.php)

<?php
session_start();//启动session
unset($_SESSION['name']);//注销session变量
session_destroy();//清除session ID
header(“Location:session2.php”);//跳转回前面页面
?>

(以上另存为deletesession.php)


session的常用操作:

session的写入、读取、注册与删除。

session的开始

标记session使用开始的函数是session_start,session_start函数用于初始化session变量。语法如下:

session_start();

返回值为TRUE。

session的写入和读取

在PHP中,session的使用是通过预定义数组$_SESSION的调用和读取来完成。

在网站的页面中,在注册页面对$_SESSION数组进行赋值,在其他的页面中对$_SESSION数组进行读取。

注册页面中的session,例如:

 代码如下 复制代码
<?php
session_start();
$_SESSION['keyword']= "php";
?>

其他页面中的session,例如:

 代码如下 复制代码
<?php
session_start();
echo $_SESSION['keyword'];
?>

依次运行,结果是:

php

session的检测与注销

还记得isset和unset函数吗?这两个函数分别实现session的检测与注销。

isst函数用于检测session是否已经被存在,语法如下:

bool isset($_SESSION['session_name'])

例如:

 代码如下 复制代码

<?php
session_start();
if(isset($_SESSION['keyword']))
 echo $_SESSION['keyword'];
 else
  echo "www.111cn.net";
?>

结果:

php

usset函数用于注销已经建立的session变量。语法如下:

unset($_SESSION['session_name']))

例如:

 代码如下 复制代码

<?php
session_start();
unset($_SESSION['keyword']);
if(isset($_SESSION['keyword']))
  echo $_SESSION['keyword'];
  else
   echo "www.111cn.net";
?>

结果:

www.111cn.net


Php处理会话的函数一共有10个,我们详细介绍一下将要用到几个函数。

1、 session_start

函数功能:开始一个会话或者返回已经存在的会话。
函数原型:boolean session_start(void);
返回值:布尔值
功能说明:这个函数没有参数,且返回值均为true。最好将这个函数置于最先,而且在它之前不能有任何输出,否则会报警,如:Warning: Cannot send session cache limiter - headers already sent (output started at /usr/local/apache/htdocs/cga/member/1.php:2) in /usr/local/apache/htdocs/cga/member/1.php on line 3
2、 session_register

函数功能:登记一个新的变量为会话变量
函数原型:boolean session_register(string name);
返回值:布尔值。
功能说明:这个函数是在全局变量中增加一个变量到当前的SESSION中,参数name就是想要加入的变量名,成功则返回逻辑值true。可以用$_SESSION[name]或$HTTP_SESSION_VARS[name]的形式来取值或赋值。
3、 session_is_registered


函数功能:检查变量是否被登记为会话变量。
函数原型:boobean session_is_registered(string name);
返回值:布尔值
功能说明:这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。
4、 session_unregister


函数功能:删除已注册的变量。
函数原型:boolean session_session_unregister(string name);
返回值:布尔值
功能说明:这个函数在当前的session之中删除全局变量中的变量。参数name就是欲删除的变量名,成功则返回true.
5、 Session_destroy


函数功能:结束当前的会话,并清空会话中的所有资源。
函数原型:boolean session destroy(void);
返回值:布尔值。
功能说明:这个函数结束当前的session,此函数没有参数,且返回值均为true
上面介绍函数下文将会用到,但还有一些有关session的函数也介绍一下:
6、 session_encode


函数功能:sesssion信息编码
函数原型:string session_encode(void);
返回值:字符串
功能说明:返回的字符串中包含全局变量中各变量的名称与值,形式如:a|s:12:"it is a test";c|s:4:"lala"; a是变量名 s:12代表变量a的值"it is a test的长度是12 变量间用分号”;”分隔。
7、 session_decode


函数功能:sesssion信息解码
函数原型:boolean session_decode (string data)
返回值:布尔值
功能说明:这个函数可将session信息解码,成功则返回逻辑值true
8、 session_name


函数功能:存取当前会话名称
函数原型:boolean session_name(string [name]);
返回值:字符串
功能说明:这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name
9、 session_id


函数功能:存取当前会话标识号
函数原型:boolean session_id(string [id]);
返回值:字符串
功能说明:这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id
10、 session_unset


函数功能:删除所有已注册的变量。
函数原型:void session_unset (void)
返回值:布尔值
功能说明:这个函数和Session_destroy不同,它不结束会话。就如同用函数session_unregister逐一注销掉所有的会话变量。

本文章来给各位同学介绍一篇关于php 二维数组以某一键名进行分组相加实例程序,希望此教程对各位同学会有所帮助。

如题,如果是从数据库里取数据的时候大可以

SELECT SUM(t_value),t_id FROM t_table GROUP BY t_id

但是如果是在php程序中处理类似的问题就稍微麻烦点了,这里给个函数就是处理类似的问题

 代码如下 复制代码

<?php 

/* 函数功能:对二维数组以某一键名进行分组相加,返回新的二维数组 

 * 参数说明:$arr-源数组;$new_arr-相加后得到的新数组;$target_key-要分组的键名 

 */

function add_array($arr, &$new_arr, $target_key) { 

    $num = count($new_arr); //计算新数组的大小,新数组也是二维的,这里计算的是第一维 

    for ($i = 0; $i < $num; $i++) { 

        //循环新数组 

        //if块主要判断当前分组的键名是否已经存在于新数组中,避免重复 

        //由于该函数是被循环调用的,而新数组可能有多于1个的元素,所以必须对新数组中的每一个元素都进行比较, 

        //新数组的元素是一个一维数组,$i动态的比较新的二维数组中的分组键名 

        if ($arr[$target_key] != $new_arr[$i][$target_key]) {//判断新数组中的分组键名是否跟当前源数组中的分组键名相等 

            $cmp_num++; //如果不相等,比较次数自增1 

        } else {//如果相等,说明当前分组键名已经存在 

            $tar_exist = true; //设置存在标识为true 

            $tar_key = $i; //返回当前分组键名在新数组中的数字索引 

            break; //跳出循环 

        } 

    } 

    //如果比较次数跟新数组大小一样,说明当前分组键名不在新数组中,设置存在标识为false 

    if ($cmp_num == $num) 

        $tar_exist = false; 

    if ($tar_exist) {//如果分组键名已经存在,对该分组的数组元素进行相加 

        foreach ($arr as $key => $value) { 

            if ($key != $target_key) {//分组键名对应的元素值不相加 

                $new_arr[$tar_key][$key]+=$value; //其余的元素值进行相加 

            } 

        } 

    } else { 

        //如果分组键名不存在 

        //设置新的分组键名,并对该分组的数组元素进行相加 

        //新数组的第一维使用$num参数来分辨当前分组的秩序 

        //由于$num实际上就是新数组中,按键名分组的个数,并且是从0开始,所以新的分组在新数组中的索引直接用$num即可, 

        //而不须要$num+1 

        $new_arr[$num][$target_key] = $arr[$target_key]; 

        foreach ($arr as $key => $value) { 

            if ($key != $target_key) {//分组键名对应的元素值不相加 

                $new_arr[$num][$key]+=$value; //其余的元素值进行相加 

            } 

        } 

    } 

$arr = array( 

    array('group_id' => 13, 'team_price' => 88.00, 'satopay_price' => 85.00, 'team_id' => 348, 'origin' => 440, 'gain' => 14.45, 'quantity' => 5), 

    array('group_id' => 13, 'team_price' => 12.00, 'satopay_price' => 11.00, 'team_id' => 344, 'origin' => 36, 'gain' => 2.76, 'quantity' => 3), 

    array('group_id' => 14, 'team_price' => 4.99, 'satopay_price' => 4.60, 'team_id' => 335, 'origin' => 4.99, 'gain' => 0.31915, 'quantity' => 1), 

    array('group_id' => 14, 'team_price' => 12.00, 'satopay_price' => 11.00, 'team_id' => 344, 'origin' => 24, 'gain' => 1.84, 'quantity' => 2), 

    array('group_id' => 15, 'team_price' => 13.00, 'satopay_price' => 11.00, 'team_id' => 344, 'origin' => 24, 'gain' => 1.84, 'quantity' => 2), 

); 

$new_arr = array(); 

foreach ($arr as $key => $value) { 

    add_array($value, &$new_arr, 'group_id'); //这里我们按group_id进行分组相加 

var_dump($new_arr);

[!--infotagslink--]

相关文章

  • Photoshop火龙变冰龙制作教程分享

    今天小编在这里就来给Photoshop的这一款软件的使用者们来说下火龙变冰龙的制作教程,各位想知道具体的制作步骤的使用者们,那么下面就快来跟着小编一起看看制作教程吧。...2016-09-14
  • Illustrator渐变网格工具绘制可爱的卡通小猪教程分享

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一说渐变网格工具绘制可爱的卡通小猪的教程,各位想知道具体制作方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Photoshop功夫熊猫电影海报制作步骤分享

    不知不觉功夫熊猫这部电影已经出到3了,今天小编在这里要教大家的是用Photoshop制作功夫熊猫3的海报,各位想知道制作方法的,那么下面就来跟着小编一起看看吧。 给各...2016-09-14
  • photoshop日系小清新通透人像调色教程分享

    今天小编在这里就来给photoshop的这一款软件的使用者们来说一说日系小清新通透人像的调色教程,各位想知道具体的调色步骤的使用者们,那么下面就快来跟着小编一起看一看...2016-09-14
  • php威盾解密的例子分享

    下面来给大家分享两个关于php威盾解密的例子,一个是批量解密一个是超级算法的解密都非常的好,大家有举的进入参考。 例子,批量解密 代码如下 复制代码 ...2016-11-25
  • PHP mysql与mysqli事务使用说明 分享

    mysqli封装了诸如事务等一些高级操作,同时封装了DB操作过程中的很多可用的方法。应用比较多的地方是 mysqli的事务。...2013-10-02
  • php实例分享之html转为rtf格式

    核心代码: 复制代码 代码如下:<!--?php$html2RTFCom = new COM("HTML2RTF.Converter");$html2RTFCom--->PreserveImages = true;$html2RTFCom->PageNumbers = 1;$html2RTFCom->PageNumbersAlignH = 1;$html2RTFCom->Pa...2014-06-07
  • 7道关于JS this的面试题,你能答对几个

    这篇文章主要给大家介绍了7道关于JS this的面试题,来看看你能答对几个,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-05
  • 微信小程序实现canvas分享朋友圈海报

    这篇文章主要为大家详细介绍了微信小程序实现canvas分享朋友圈海报,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
  • 美图秀秀制作卡通全家福教程分享

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下制作卡通全家福的教程,各位想知道具体制作方法的使用者们,那么下面就快来跟着小编一起看一看教程吧。 ...2016-09-14
  • vue如何调用浏览器分享功能详解

    这篇文章主要给大家介绍了关于vue如何调用浏览器分享的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-20
  • 纯JS代码实现一键分享功能

    在qq空间,新浪微博,人人网等网络平台大家经常可以看到一键分享功能,那么基于js代码是如何实现一键分享的呢?下面脚本之家小编给大家介绍js实现一键分享功能的代码,需要的朋友参考下吧...2016-04-22
  • PHP+memcache实现消息队列案例分享

    memche消息队列的原理就是在key上做文章,用以做一个连续的数字加上前缀记录序列化以后消息或者日志。然后通过定时程序将内容落地到文件或者数据库。php实现消息队列的用处比如在做发送邮件时发送大量邮件很费时间的问...2014-05-31
  • MySQL 5.5主从同步设置笔记分享

    先修改Master(10.1.123.197)的 my.cnf 配置在 [mysqld] 中新增以下内容:复制代码 代码如下:log-bin=mysql-binlog-bin-index=mysql-bin.indexserver-id = 1sync_binlog=1binlog_format=mixed然后指定要做同步的数据库,并...2014-05-31
  • Photoshop曲线基本功能解析分享

    今天小编在这里就来给Photoshop的这一款软件的使用者们来说一说曲线的基本功能,各位想知道具体信息的使用者,那么下面就快来跟着小编一起看一看教程吧。 给各位Pho...2016-09-14
  • Painter基础教程之图像水管分享

    今天小编在这里就来给Painter的这一款软件的使用者们来说下基础教程之图像水管,各位想知道的使用者们,那么下面就快来跟着小编一起看看吧。 给各位Painter软件的使...2016-09-14
  • 美图秀秀怎么制作LOMO效果 LOMO效果制作教程分享

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下LOMO效果的制作教程,各位想知道具体制作方法的使用者们,那么下面就快来跟着小编一起看一看教程吧。 给...2016-09-14
  • 美图秀秀怎么制作发光字 发光字制作教程分享

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下发光字的制作教程,各位想知道具体制作步骤的,那么下面就快来跟着小编一起看一看教程吧。 给各位美图秀...2016-09-14
  • 美图秀秀怎么改画质步骤 改画质步骤分享

    今天小编子啊这里就来给美图秀秀的这一款软件的使用者们来说下改画质的步骤,各位想知道具体方法的使用者,那么下面就快来跟着小编一起看一下教程吧。 给各位美图秀...2016-09-14
  • 美图秀秀怎么去掉文字 去掉文字方法分享

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下去掉文字的方法,各位想知道具体方法的使用者们,那么下面就快来跟着小编一起看一看吧。 给各位美图秀秀...2016-09-14