仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1555|回复: 20
打印 上一主题 下一主题

[学习教程] PHP编程:session全教程(二)

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大部分语言的基础,不是说c有多好,而是c相对起手容易学,让你认为这个是编程语言,session|教程   2、php3,4中session的完成

在php3中是没有session这类东东的,但咱们又需求,怎样办呢?别急,有良多人替你做了这些,这个中最着名的要算phplib了。你可以去国外下载,可以上国际大局部php站点下载。咱们要做的第一件事是让phplib和php3联合在一同使它能任务。为了能完成这方面的功效,咱们需求先装置phplib。随着我来做,很轻易的(以下办法在win2000+php3.0.16+apache1.3.12+phplib7.2c+mysql3.23.21 for win32 上经由过程)phplib最根基的功效包含用户认证,Session办理,权限及数据库的笼统化。

如何利用phplib来完成session功效呢?

1、起首你将phplib解开,外面有一个目次叫"php",将这个目次拷贝到apache的装置目次下。以笔者的机械为例:我的apache装置在d:/apache目次下,我将下面的"php"目次拷贝到d:a/pache,并将phplib下的pages 目次下的文件和目次一同拷贝到 d:/apache/htdocs下,注重不带目次自己。phplib的类库需求依据体系停止初始化,你可以修正local.inc文件,个中包括着一些根基参数,你可以依据本人机械的实践情形来停止修正。 将d:/apache/php/prepend.php3文件中的一段法式改成以下模样:

if (!isset($_PHPLIB) or !is_array($_PHPLIB)) {
$_PHPLIB["libdir"] = "d:/apache/php/"; //这儿改成你放phplib下php目次的途径
}

然后将d:/apache/php/local.inc文件改以下:

class DB_Example extends DB_Sql {
var $Host = "localhost";//你的mysql数据库地点主机名
var $Database = "test";//数据库名
var $User = "root";//数据库用户名
var $Password = "";//数据库用户口令
}

最初一步履行解开的phplib目次中的stuff目次下的create_database.mysql文件,生成初始表。咱们申明一下phplib的任务道理,每个利用phplib的页面起首必需可以找到运转phplib所必需类库文件,咱们可以在php3.ini中设置auto_prepend变量来撑持,phplib分发包中包括一个prepend.php3文件,将auto_prepend指定"d:/apache/php/prepend.php3"(带引号)后,各页面就会主动包括phplib类库,咱们还可以将phplib类库地点目次加进include变量中,以即可以找到这些文件,固然,最苯的举措就是指定phplib的相对途径,这可不是个好主张,可移植性太差!

第二步,每个利用phplib的页面中,你必需起首挪用page_open函数停止初始化。这会告知phplib,你如今或未来会用到形态保留。一个典范的
page_open例子以下:

<?php
page_open(array("sess" => "Example_Session"));
?>

数组变量(sess)用来初始化一些形态保留对象,注重:必需利用phplib内置名(sess),这些内置名是你在local.ini中所界说的,page_open函数必需在页面内容输入到阅读器之前被挪用。php3剧本最初应以page_close()停止,这将会将有关形态数据写回到数据库中,假如你忘了的话,了局你应当能想到,哈哈,你的变量全丢了,可不要怪我没告知你...

由于phplib利用了Cookies来保留形态信息,所以page_open()函数必需在页面内容输入到阅读器之前被挪用, 这里的页面内容可所以任何HTML信息或空行,假如你发明了毛病"Oops - SetCookie called after header has been sent",这标明在page_open()之前向阅读器输入了些甚么,你要出格寄望空行,由于十分难找到,典范的毛病是在<? 和 ? >标志之间输入了空行,你应反省在local.inc和prepend.php3文件中是不是包括了空行,这也是一个十分轻易失足的中央。为了削减失足的能够,咱们可以如许书写初始化法式:
<?
page_open(array("sess" => "Example_Session"));
?>
<html>
.....
</html>

第三步,详细利用。
当一个用户会见了该网站后,随即用户的session就入手下手了,假如用户的阅读器撑持cookie的话,将会创立一个session的id放入cookie,这个独一的ID是由PHP3随机生成,然后又用随机种子字串停止md5加密过了的,这里的cookie应当叫做session cookie,由于这个cookie是不会写到用户硬盘里去的,当一个session期停止的时分,该cookie也被结束了。假如用户阅读器不撑持cookie的话,那末 该session的id将会放入url链中,由于是加密过的,所以盗取了也没用。session ID寄存着用户的有关信息,如用户已认证、认证到期工夫、用户权限,和其他一些你能够需求的信息,便利咱们取用。Session其实就是用户一次会话的进程。Session并非仅仅用来跟踪用户的注册,实践上,它还可以有其它的利用场所,你可以用它来存储任何你想要存贮的信息,这些信息可以在用户随后会见的页面中派上用处,固然条件是那些页面要利用PHPLIB。办法很复杂,注册一个变量后便可在随后的页面中利用它,直至session停止。办法:
<?php $sess->register( "variable_name"); ?>

注重,这里的variable_name不是变量值,而是变量名,可以先指定变量名,随后再赋值。你在某个页面中可以改动变量的值,随后的页面会见该变量会失掉改动后的值。变量的类型是多样的,可所以一个字串,一个数字,一个数组。举例来讲明:

第一页:
<?php
page_open(array("sess" => "Example_Session"));
$sess->register( "first"); //注重变量名前不需求加$
if (iset($firstname)) {
$first = $firstname;
}
.....
page_close();
?>

第二页:
<?php
page_open();//入手下手session


echo $first;//看看后果

page_close();//保留形态信息
?>

注册完一个变量,当页面最初挪用page_close()函数后,各个session变量会被写回到数据库中。假如你健忘挪用page_close()函数的话,变量就不会被写回数据库,将呈现不成预知的效果。当变量被利用终了,你不再需求用到时,可以挪用以下函数将变量删除:

<?php
page_open(array("sess" => "Example_Session"));
...
$sess->unregister( "variable_name");
...
page_close();
?>

PHPLIB 7.0中,利用了一种存储布局,它答应你存储session数据到数据库中、同享内存中或LDAP中。PHPLIB利用了数据库类,这使得你有了更多的选择,你可以选用oracle8,mysql,postgresql等等数据库来保留形态信息。

关于phplib中的其它功效和有关session的其它函数的利用,你可以参看它带的手册,或上它的网站看在线文档。它的老家在http://phplib.netuse.de/index.php3 。php4的session完成大都从phplib学来的,它也靠cookies保留session id,用文件体系保留变量(默许情形下)。因而,它的session变量不克不及保留对象(现实上能保留对象内容,但没成心义,由于它是保留在磁盘上的,不是活的对象,充其量也就是对象尸身。)不外这点的限制不是太大,咱们在大局部情形下都只需求保留变量就好了。固然你也能够将session保留在数据库中,下一大节中咱们会讲到如何将session保留在数据库中。在php4中因为比php3多了session撑持,所以在php.ini文件中也多了session设置装备摆设选项。上面咱们来看看各项的感化与意义:

[Session]
session.save_handler = files ; handler used to store/retrieve data(用甚么保留session变量,默许情形下用文件)
session.save_path = c:/temp ; argument passed to save_handler(保留session变量的目次,在linux/unix下为/tmp,在win下设为你的目次)
; in the case of files, this is the
; path where data files are stored
session.use_cookies = 1 ; whether to use cookies(是不是利用cookies,固然,在win下别无选择)
session.name = PHPSESSID
; name of the session(默许session利用的cookies名,建议不要修改)
; is used as cookie name
session.auto_start = 0 ; initialize session on request startup(是不是主动启用session,当为1时,在每页中就能够不用挪用session_start()函数了)
session.cookie_lifetime = 0 ; lifetime in seconds of cookie(设定 cookie 送到阅读器后的保留工夫,单元为秒。缺省值为 0,暗示直到阅读器封闭。)
; or if 0, until browser is restarted
session.cookie_path = / ; the path the cookie is valid for(cookie)(cookies无效途径)
session.cookie_domain = ; the domain the cookie is valid for(cookies无效域名)
session.serialize_handler = php ; handler used to serialize data(界说序列化数据的标识,本功效只要 WDDX 模块或 PHP 外部利用。缺省值为 php)
; php is the standard serializer of PHP
session.gc_probability = 1 ; percentual probability that the (设定每次一时文件入手下手处置 (gc, garbage collection) 处置几率。缺省值为 1。 )
; 'garbage collection' process is started
; on every session initialization
session.gc_maxlifetime = 1440 ; after this number of seconds, stored(设定保留session的一时文件被排除前的存活秒数)
; data will be seen as 'garbage' and
; cleaned up by the gc process
session.referer_check = ; check HTTP Referer to invalidate (决意参照到客户真个Session 代码是不是要删除。有时在平安或其它思索时,会设定不删除。缺省值为 0。)
; externally stored URLs containing ids
session.entropy_length = 0 ; how many bytes to read from the file(设定 session 从高熵值资本读取的位数。缺省值为 0.)
session.entropy_file = ; specified here to create the session id(设定 session 代码创立时,利用内部高熵值资本或文件来创立,例如 UNIX 体系上的 /dev/random 或 /dev/urandom。 )
; session.entropy_length = 16
; session.entropy_file = /dev/urandom
session.cache_limiter = nocache ; set to { nocache,private,public } to (设定session缓冲限制)
; determine HTTP caching aspects
session.cache_expire = 180 ; document expires after n minutes(文档无效期,单元为分钟)

在windows平台下,php4.01pl2之前的版本会呈现设置session.save_path 后失足的情形,这是php的一个bug,在php4.01pl2及今后已修改了。假如你用之前的版本,你可以将session.save_path设为"./",或设为"/temp",并在你放置php剧本确当前盘根目次下建一个名为temp的目次便可(我的php剧本放在d:apachehtdocs下,则我在d:盘根目次下建一位为temp的目次)。
在php4中有关session的函数次要有以下这些:

session_start: 初始化session,需求用session的每个页面最入手下手处挪用。
session_destroy: 停止 session,在需求停止session处调。
session_name: 存取今朝 session 称号。
session_module_name: 存取今朝 session 模块。
session_save_path: 存取今朝 session 途径。
session_id: 存取今朝 session id号。
session_register: 注册新的session变量。
session_unregister: 删除已注册session变量。
session_is_registered: 反省session变量是不是注册。
session_decode: Session 数据解码。
session_encode: Session 数据加密。

凡是情形下咱们只需求挪用三个函数便可。
即sesssion_start()、session_register()、session_is_registered()。
在需求用到session的每页的最入手下手处挪用session_start()函数,
一个典范的利用session的页面以下:
<?session_start()?>
<html>
....
<body>
<?
$var="hello";
session_register("var");//注册$var变量,注重没有$符号


if(session_is_registered("var"))//反省变量是不是注册
echo "haha,注册了!";
else
echo "sorry,还没有注册!";

?>
</body>
</html>


php4中session处置的定制

咱们需求扩大6个函数,固然这些函数不需你去挪用,对咱们来讲是通明的。

这几个函数是:
sess_open($sess_path, $session_name);

这个函数被session处置法式挪用来作初始化任务。需求传给它的两个参数是$sess_path,它对应你的php.ini文件中的session.save_path选项;$session_name,它对应php.ini中的session.name 选项。它们详细如何任务,请看上面的例子。

sess_close();

这个函数在页面停止履行而且session处置法式需求封闭时被挪用。(注重,不要和sess_destory搅浑了,它是用来停止session的)

sess_read($key);

这个函数在session处置法式读取指定session键值($key)时。
这个函数检索并前往标识为$key的session数据.(注重:你不必忧虑如何序列化和反序列化数据,假如你不晓得这是甚么意思,不要忧虑它)

译者注:序列化是将变量或对象在法式停止或需求时保留在文件中,鄙人次法式运转或需求时再
调入内存的手艺,有别于只保留数据的办法。

sess_write($key, $val);

这个函数据在session处置法式需求将数据保留时挪用,这类情形常常在你的法式停止时产生。它担任将数据保留鄙人次能用sess_read($key)函数检索的中央。

sess_destroy($key);

这个函数在需求消毁session时。它担任删除session而且排除情况。


sess_gc($maxlifetime);
这个函数担任清算碎片。在这类情形下,它担任删除过时的session数据。session处置法式会偶然挪用它们。

如今咱们已清晰了咱们供应的函数。

定制法式可以用mysql数据库或DBM文件保留session数据。取决于你的需求。
假如你决意利用mysql作撑持,那需求作以下任务:

起首咱们在mysql中创立一个sessions数据库,而且创立一个sessions表。先运转你的mysql客户端而且履行上面的号令:
mysql> CREATE DATABASE sessions;

mysql> GRANT select, insert, update, dele ON sessions.* TO phpsession@localhost
-> IDENTIFIED BY 'phpsession';

mysql> CREATE TABLE sessions (
-> sesskey char(32) not null,
-> expiry int(11) unsigned not null,
-> value text not null,
-> PRIMARY KEY (sesskey)
-> );

下一步,修正session_mysql.php文件的$SESS_DB* 变量使其婚配你机械上的数据库设置。

(很抱愧,因为版权缘由,我不克不及把以下代码中的英文去失落,只好加些正文了
==================================================================================
<?
/* ------------------------------------------------------------------------
* session_mysql.php
* ------------------------------------------------------------------------
* PHP4 MySQL Session Handler
* Version 1.00
* by Ying Zhang (ying@zippydesign.com)
* Last Modified: May 21 2000
*
* ------------------------------------------------------------------------
* TERMS OF USAGE:
* ------------------------------------------------------------------------
* You are free to use this library in any way you want, no warranties are
* expressed or implied. This works for me, but I don't guarantee that it
* works for you, USE AT YOUR OWN RISK.
*
* While not required to do so, I would appreciate it if you would retain
* this header information. If you make any modifications or improvements,
* please send them via email to Ying Zhang <ying@zippydesign.com>.
*
* ------------------------------------------------------------------------
* DESCRIPTION:
* ------------------------------------------------------------------------
* This library tells the PHP4 session handler to write to a MySQL database
* instead of creating individual files for each session.
*
* Create a new database in MySQL called "sessions" like so:
*
* CREATE TABLE sessions (
* sesskey char(32) not null,
* expiry int(11) unsigned not null,
* value text not null,
* PRIMARY KEY (sesskey)
* );
*
* ------------------------------------------------------------------------
* INSTALLATION:
* ------------------------------------------------------------------------
* Make sure you have MySQL support compiled into PHP4. Then copy this
* script to a directory that is accessible by the rest of your PHP
* scripts.
* 确信你的php4有mysql撑持,然后把这个剧本拷贝到和你的php剧本有关的目次。
* ------------------------------------------------------------------------
* USAGE:(利用办法)
* ------------------------------------------------------------------------
* Include this file in your scripts before you call session_start(), you
* don't have to do anything special after that.
* 包括这个文件到你要利用session的文件中,必需在挪用session_start()之前,不然,
* 会很惨的,不要怪我没告知你。 如许就不需求再做甚么任务了,还和你之前用session的办法一样。
*/

$SESS_DBHOST = "localhost"; /* database server hostname */
$SESS_DBNAME = "sessions"; /* database name */
$SESS_DBUSER = "phpsession"; /* database user */
$SESS_DBPASS = "phpsession"; /* database password */

$SESS_DBH = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");

function sess_open($save_path, $session_name) {
global $SESS_DBHOST, $SESS_DBNAME, $SESS_DBUSER, $SESS_DBPASS, $SESS_DBH;

if (! $SESS_DBH = mysql_pconnect($SESS_DBHOST, $SESS_DBUSER, $SESS_DBPASS)) {
echo "<li>Can't connect to $SESS_DBHOST as $SESS_DBUSER";
echo "<li>MySQL Error: ", mysql_error();
die;
}

if (! mysql_select_db($SESS_DBNAME, $SESS_DBH)) {
echo "<li>Unable to select database $SESS_DBNAME";
die;
}

return true;
}

function sess_close() {
return true;
}

function sess_read($key) {
global $SESS_DBH, $SESS_LIFE;

$qry = "SELECT value FROM sessions WHERE sesskey = '$key' AND expiry > " . time();
$qid = mysql_query($qry, $SESS_DBH);

if (list($value) = mysql_fetch_row($qid)) {
return $value;
}

return false;
}

function sess_write($key, $val) {
global $SESS_DBH, $SESS_LIFE;

$expiry = time() + $SESS_LIFE;
$value = addslashes($val);

$qry = "INSERT INTO sessions VALUES ('$key', $expiry, '$value')";
$qid = mysql_query($qry, $SESS_DBH);

if (! $qid) {
$qry = "UPDATE sessions SET expiry = $expiry, value = '$value' WHERE sesskey
= '$key' AND expiry > " . time();
$qid = mysql_query($qry, $SESS_DBH);
}

return $qid;
}

function sess_destroy($key) {
global $SESS_DBH;

$qry = "DELETE FROM sessions WHERE sesskey = '$key'";
$qid = mysql_query($qry, $SESS_DBH);

return $qid;
}

function sess_gc($maxlifetime) {
global $SESS_DBH;

$qry = "DELETE FROM sessions WHERE expiry < " . time();
$qid = mysql_query($qry, $SESS_DBH);

return mysql_affected_rows($SESS_DBH);
}

session_set_save_handler(
"sess_open",
"sess_close",
"sess_read",
"sess_write",
"sess_destroy",
"sess_gc");
?>
=================================================================
定制利用dbm文件时的接口
=================================================================
<?
/* ------------------------------------------------------------------------
* session_dbm.php
* ------------------------------------------------------------------------
* PHP4 DBM Session Handler
* Version 1.00
* by Ying Zhang (ying@zippydesign.com)
* Last Modified: May 21 2000
*
* ------------------------------------------------------------------------
* TERMS OF USAGE:
* ------------------------------------------------------------------------
* You are free to use this library in any way you want, no warranties are
* expressed or implied. This works for me, but I don't guarantee that it
* works for you, USE AT YOUR OWN RISK.
*
* While not required to do so, I would appreciate it if you would retain
* this header information. If you make any modifications or improvements,
* please send them via email to Ying Zhang <ying@zippydesign.com>.
*
* ------------------------------------------------------------------------
* DESCRIPTION:
* ------------------------------------------------------------------------
* This library tells the PHP4 session handler to write to a DBM file
* instead of creating individual files for each session.
*
* ------------------------------------------------------------------------
* INSTALLATION:
* ------------------------------------------------------------------------
* Make sure you have DBM support compiled into PHP4. Then copy this
* script to a directory that is accessible by the rest of your PHP
* scripts.
* 确信你的php4有DBM撑持。拷贝这个文件在你的php剧本目次。
* ------------------------------------------------------------------------
* USAGE:
* ------------------------------------------------------------------------
* Include this file in your scripts before you call session_start(), you
* don't have to do anything special after that.
* 在挪用session_start()之前请包括这个文件。以后就不需求作甚么任务了。
*/

$SESS_DBM = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");

function sess_open($save_path, $session_name) {
global $SESS_DBM;

$SESS_DBM = dbmopen("$save_path/$session_name", "c");
return ($SESS_DBM);
}

function sess_close() {
global $SESS_DBM;

dbmclose($SESS_DBM);
return true;
}

function sess_read($key) {
global $SESS_DBM, $SESS_LIFE;

$var = "";
if ($tmp = dbmfetch($SESS_DBM, $key)) {
$expires_at = substr($tmp, 0, strpos($tmp, "│"));

if ($expires_at > time()) {
$var = substr($tmp, strpos($tmp, "│") + 1);
}
}

return $var;
}

function sess_write($key, $val) {
global $SESS_DBM, $SESS_LIFE;

dbmreplace($SESS_DBM, $key, time() + $SESS_LIFE . "│" . $val);
return true;
}

function sess_destroy($key) {
global $SESS_DBM;

dbmdele($SESS_DBM, $key);
return true;
}

function sess_gc($maxlifetime) {
global $SESS_DBM;

$now = time();
$key = dbmfirstkey($SESS_DBM);
while ($key) {
if ($tmp = dbmfetch($SESS_DBM, $key)) {
$expires_at = substr($tmp, 0, strpos($tmp, "│"));
if ($now > $expires_at) {
sess_destroy($key);
}
}

$key = dbmnextkey($SESS_DBM, $key);
}
}

session_set_save_handler(
"sess_open",
"sess_close",
"sess_read",
"sess_write",
"sess_destroy",
"sess_gc");
?>

=================================================================
详细怎样用就不必多说了,由于这些函数都是php引擎挪用的,与咱们有关的。咱们只需照上述配
置后就好了,你用的仍是之前的session函数。
看看上面的代码就晓得了:)


session定制的测试代码
==================================================================
<?
/* ------------------------------------------------------------------------
* test.php
* ------------------------------------------------------------------------
* PHP4 Customer Session Handler Test Script
* Version 1.00
* by Ying Zhang (ying@zippydesign.com)
* Last Modified: May 21 2000
*/

/* default to DBM handler */
if (! isset($handler)) {
$handler = "dbm";
}

/* default action is increment */
if (! isset($action)) {
$action = "increment";
}

/* load up the appropriate session handling script, depending on the handler */
if ($handler == "dbm") {
include("session_dbm.php");

} elseif ($handler == "mysql") {
include("session_mysql.php");

} else {
echo "<li>Unrecognized handler ($handler)";
die;
}

/* start the session and register a simple counter */
session_start();
session_register("count");

/* figure out what we should do, depending on the action */
switch ($action) {
case "increment" :
$count = isset($count) ? $count + 1 : 0;
break;

case "destroy" :
session_destroy();
break;

case "gc" :
$maxlife = get_cfg_var("session.gc_maxlifetime");
sess_gc($maxlife);
break;

default:
echo "<li>Unknown action ($action)";
break;
}
?>

<h1>Session Test Script</h1>
<ul>
<li>Handler: <b><?=$handler?></b>
<li>Action: <b><?=$action?></b>
<li>Count: <b><?=$count?></b>
</ul>

<hr size=1>
<form>
<table>
<tr>
<td>Handler:</td>
<td>
<select name="handler">
<option value="dbm">DBM</option>
<option value="mysql">MySQL</option>
</select>
</td>
</tr>
<tr>
<td>Action:</td>
<td>
<select name="action">
<option value="increment">Increment</option>
<option value="destroy">Session Destroy</option>
<option value="gc">Force Garbage Collection</option>
</select>
</td>
</tr>
<tr>
<td></td>
<td><br><input type="submit"></td>
</tr>
</table>
</form>
=======================================================================
  接触MYSQL,开始设计数据库程序
小妖女 该用户已被删除
沙发
发表于 2015-2-4 12:33:26 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
精灵巫婆 该用户已被删除
板凳
发表于 2015-2-6 07:30:41 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
深爱那片海 该用户已被删除
地板
发表于 2015-2-15 14:56:32 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
活着的死人 该用户已被删除
5#
发表于 2015-2-26 17:16:13 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
兰色精灵 该用户已被删除
6#
发表于 2015-2-26 20:32:19 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-6 04:32:42 | 只看该作者
做为1门年轻的语言,php一直很努力。
冷月葬花魂 该用户已被删除
8#
发表于 2015-3-11 23:07:47 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
透明 该用户已被删除
9#
发表于 2015-3-14 18:33:15 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
小女巫 该用户已被删除
10#
发表于 2015-3-19 05:49:59 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
萌萌妈妈 该用户已被删除
11#
 楼主| 发表于 2015-3-20 10:07:52 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
12#
发表于 2015-4-7 18:33:58 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
金色的骷髅 该用户已被删除
13#
发表于 2015-4-26 01:10:28 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
飘飘悠悠 该用户已被删除
14#
发表于 2015-4-28 08:26:22 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
若相依 该用户已被删除
15#
发表于 2015-5-1 04:47:33 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
第二个灵魂 该用户已被删除
16#
发表于 2015-5-6 00:04:28 | 只看该作者
爱上php,他也会爱上你。
若天明 该用户已被删除
17#
发表于 2015-5-6 03:12:25 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
愤怒的大鸟 该用户已被删除
18#
发表于 2015-6-18 21:02:25 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
变相怪杰 该用户已被删除
19#
发表于 2015-6-20 21:52:34 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
小魔女 该用户已被删除
20#
发表于 2015-6-25 23:25:18 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表