加问:
①php中如何设置SESSION变量?
②如何跳转其它页面?header函数好像是apache专用的,IIS中如何使用呢?请高手指点,分数会加的

解决方案 »

  1.   

    session_register
    注册新的变数。语法: boolean session_register(string name);传回值: 布林值函式种类: 资料处理
     
     
    内容说明 
    本函式在全域变数中增加一个变数到目前的 Session 之中。参数 name 即为欲加入的变数名。成功则传回 true 值。
      

  2.   

    iis也能用header的,好像能不能支持header是与浏览器有关的,正常情况下服务器发回类似
    HTTP/1.0 206 Partial Content
    Date: Sat, 12 Jan 2002 09:16:32 GMT
    Server: Apache/1.3.14 (Unix)
    Last-Modified: Mon, 07 Jan 2002 09:35:11 GMT
    ETag: "bde02-23369d95-3c396bcf"
    Accept-Ranges: bytes
    Content-Length: 317281024
    Content-Type: text/plain用了header后会有
    Location: aim.htm
    浏览器接受到以后,就转向aim.htm了,因为这些头信息都是在网页内容出现之前浏览器接受的,所以在使用header函数时,其前面不能有任何的输出。
      

  3.   

    多谢二位不知道你们用不用ASP?PHP中什么函数相当于 ASP 中的 response.redirect?PHP中除了HEADER函数外,还有什么类似的函数么?我想再加问个问题:
    mysql_pconnect 和 mysql_connect 哪个更常用?mysql_pconnect 不可以用 mysql_close 关闭,那么什么时候关闭呢?分数最后结算
      

  4.   

    php中除了header外好像没有其他的来实现这个功能吧,要不就用javascript。
    我觉得如果连接数据库频繁的话还是用mysql_pconnect比较不错,如果已经连接过数据库的话,下次系统只是直接返回已经建立的持续连接的ID号,而不再去真的连接数据库。
      

  5.   

    “我觉得如果连接数据库频繁的话还是用mysql_pconnect比较不错,如果已经连接过数据库的话,下次系统只是直接返回已经建立的持续连接的ID号,而不再去真的连接数据库。”这个怎么理解?难道只要有一个客户端访问了页面,用mysql_pconnect打开了数据库,然后不管他有没有离开网站,这个连接都不会关闭么?其他客户访问页面也不会执行myslq_pconnect了么?也就是说一个网站就一个 数据库连接?
      

  6.   

    回:MarsChen(MarsChen)
    我使用以下程序测试:
    <?
        require("env.php");
        $r1 = time();
        for($i = 0; $i < 5000; $i ++) {
              $con = mysql_connect($hostname,$dbusername,$dbpasswd);
              mysql_close($con);
        }
        $r2 = time();
        echo 'start:';
        echo $r1;
        echo ' end:';
        echo $r2;
        echo ' start-end=';
        echo $r2-$r1;
    ?>
    开始用mysql_connect连接数据库,用mysql_close关闭连接,记录开始的时间和结束的时间,所得结果为:
    start:1010914331 end:1010914356 start-end=25
    start:1010914517 end:1010914544 start-end=27
    start:1010914560 end:1010914586 start-end=26然后改用mysql_pconnect连接:
    start:1010914613 end:1010914614 start-end=1
    start:1010914623 end:1010914624 start-end=1
    start:1010914633 end:1010914634 start-end=1看来用pconnect好像要快的多!
    我又试着用mysql_connect,连接后不用mysql_close关闭,得到很奇怪的结果:
    start:1010914669 end:1010914669 start-end=0
    start:1010914700 end:1010914700 start-end=0
    start:1010914705 end:1010914705 start-end=0看php的手册上说:实际上本函式(mysql_close)不是一定需要的,当 PHP 整页程式结束后,将会自动关闭与资料库的非永久性 (non-persistent) 连线。
    看来这次是系统帮忙关闭的连接,时间当然没有算在内了!
    从以上测试看来,当访问量比较大,连接数据库比较频繁时,用mysql_pconnect还是比较好的!
      

  7.   

    以上是一个页面重复连接,我又试了不同页面的时间差,用microtime()测试的时间。
    结果如下:
      

  8.   

    首先用一个循环来模拟大的访问量:
    <?
    require("env.php");
    $r1 = microtime();
    for($i = 0; $i < 50000; $i ++) {
    $con = mysql_connect($hostname,$dbusername,$dbpasswd);
    mysql_close($con);
    }
    ?>
    页面超时时间设为120秒。在这个页面执行的过程中来测试:
    <?
    require("env.php");
    $r1 = microtime();
    // for($i = 0; $i < 5000; $i ++) {
    $con = mysql_connect($hostname,$dbusername,$dbpasswd);
    mysql_connect($con);// }
    $r2 = microtime();
    echo 'start:';
    echo $r1;
    echo ' end:';
    echo $r2;
    echo ' start-end=';
    echo $r2-$r1;
    ?>
    首先是mysql_connect,结果为:
    start:0.01470200 1010915439 end:0.32504000 1010915439 start-end=0.310338
    start:0.62859100 1010915455 end:0.94522100 1010915455 start-end=0.31663
    start:0.19679600 1010915482 end:0.51151500 1010915482 start-end=0.314719然后用mysql_pconnect,打开页面后,记录结果,关掉浏览器,再重新打开,测得结果为:
    start:0.84367400 1010915507 end:0.87489600 1010915507 start-end=0.031222
    start:0.10627600 1010915593 end:0.14592600 1010915593 start-end=0.03965
    start:0.16655900 1010915614 end:0.19482700 1010915614 start-end=0.028268
    start:0.33137200 1010915645 end:0.37370400 1010915645 start-end=0.042332以上测试是在windows2000 pro,Apache/1.3.22 (Win32),mysql/3.23.43
    PIII667,256M/PC133,IBM/60GXP/40G/7200转
    测得。
      

  9.   

    多谢dogun(dogun),我已经加了80分,等问题结束就给你我想问一下,mysql_pconnect什么时候关闭?如果一个网站只要执行一次mysql_pconnect就够了,可不可以将 mysql_pconnect 放在类似ASP中的application_onstart事件中呢?不知道php中有没有类似application_onstart的事件?
      

  10.   

    好像php没有类似ASP中的application_onstart的事件。
    用mysql_pconnect应该也不直是一个连接,系统应该是返回可用的连接ID值,如果上次的连接因为某种原因不可用了(比如mysql服务器重启,或者网络传输出现问题),mysql_pconnect应该会建立新的连接的.由于mysql也是通过socket来创建连接,所以即使用mysql_pconnect不可能永久的连接.
    我理解连接数据库的时间和操作数据库的时间是互相制约的,用mysql_pconnect虽然连接数据库时间短了,但这个连接ID是提供给好多页面使用的,所以如果访问量大的话操作数据库肯定时间就长了,而mysql_connect使得每个页面拥有一个连接,操作数据库肯定会更快.但mysql怎么也是个小型数据库,能连接的用户不能太多,所以访问量大的话还是用mysql_pconnect好一点吧.
      

  11.   

    我发现在win2000里使用mysql_pconnect(),会增加很多的连接,不知道为什么。
    而不是一个连接。
      

  12.   

    谁能回答一下:
    MySQL 3.23.44 for windows 支持 外键么?
    即,sql语句中可以写 "foreign key ……" 么?或者说写了能起约束作用么?phpmyadmin中定义表时,最右边 fulltext 复选框什么意思?
      

  13.   

    "在MySQL里存在 FOREIGN KEY 句法仅仅为了与其他SQL供应商的 CREATE TABLE 命令相兼容;它不做任何事情."
    fulltext好像是什么全文索引,具体的不太清楚,你看以下mysql的文档吧.
      

  14.   

    多谢 dogun(dogun) 
    又加了20分,加问三个问题:
    ①如何使页面有效期为0?即PHP中什么函数相当于ASP中的response.expires=0?②linux中文件名限制为8.3格式么?我现在在WIN2K IIS中写PHP,文件名超过8位长度,在LINUX主机上是否会出现错误?③我在MYSQL中定义了一个表,其中一字段名为 "Name" (N 是大写),然后用
    $row=mysql_fetch_array(mysql_query("select * from test"));
    echo $row["name"];     //输出为空
    echo $row["Name"];     //有输出难道这里也区分大小写么?
      

  15.   

    又发现个奇怪的问题
    <?php
    if ($ok) {
    ……
    $result=mysql_query("select * from test where psw='".$psw."'");
    if (!mysql_num_rows($result)) {
        echo "密码错误";
    } else {
        echo "通过";
    }
    }
    ?>
    ……
    <form method=post action="<?echo $PHP_SELF?>">
    <input type="password" name="psw">
    <input type="submit" name="ok" value="提交">
    </form>假设密码是abc,当我输入abc,提交时是通过的,但如果我输入abc再加空格,仍然是通过的,为什么 $psw="abc" 而不是 $psw="abc "?请高手指教分数仍然可以再加,300分顶头,望各位高手不吝赐教,谢谢
      

  16.   

    空格怎么能算是非法字符呢?用ASP写就不会有这种情况
      

  17.   

    请问cookie变量怎么读呢?只有 setcookie 函数,怎么没有 getcookie
      

  18.   

    linux下没有8.3的限制.
    数组的索引值是区分大小写的.
    cookie的值直接可以用,比如你用了setcookie('name', 'value');要得到这个cookie的值,只需要用$name就是了.
    还有那个验证密码的,你在验证之前有没有用过trim($psw),要不就是你数据库里真的存在psw='abc '的资料
      

  19.   

    多谢 dogun ,验证密码的问题,我解决如下:
    经验证,发现$psw确实为"abc ",
    "select * from test where psw='".$psw."'" 改为
    "select * from test where psw like '".$psw."'",则"abc "不会再通过了,看来是MYSQL查询的问题,mysql对字符串是怎么匹配的呢?为什么 = 与 like 不一样?COOKIE的问题:
    test.php:setcookie ("test","111",time()+3600);header("location:index.php");index.php:echo $test;    //这里输出为空我现在发现是由于在test.php中用了 header,如果将header 改为 用脚本跳转页面,则在index.php中可以输出 $test 为111;
    为什么用了header函数COOKIE就不正常了呢?有什么办法解决这个问题么?PHP中有什么函数相当于 ASP 中的response.redirect呢?
      

  20.   

    是这样的:
    在访问一个曾经设置过cookie的站点时,浏览器发出的请求为:GET / HTTP/1.1
    Accept: */*
    Referer: http://nic.hziee.edu.cn/
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    If-Modified-Since: Fri, 14 Sep 2001 03:11:46 GMT
    If-None-Match: "263910fdca3cc11:9de"
    User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
    Host: nic.hziee.edu.cn
    Connection: Keep-Alive
    Cookie: ASPSESSIONIDQGGQQKBG=ABPDGBKBLLOMPLIIOOBIBIKC   //浏览器发送已经设置过的cookie当你在setcookie的时候同时使用header('location:index.php')时,浏览器直接转向index.php,并没有发送类似Cookie: ASPSESSIONIDQGGQQKBG=ABPDGBKBLLOMPLIIOOBIBIKC的信息,或者发送的是在这次setcookie之前的cookie,index.php当然不会得到$test的值,如果没有用header的话,浏览器所发送的请求中就会有最新的Cookie的值.
    asp没有怎么好好研究过,它的response.redirect也应该是使用location来使浏览器重定向的.所以和header('location:index.php');应该是一样的.
      

  21.   

    可是现在问题改怎么解决呢?
    setcookie 和 header 不能一起用,如果是ASP就不会有这样的问题,难道只有用脚本么?可不可以用header函数一起发送cookie呢?
      

  22.   

    有人能讲一下么?请问如何实现同ASP中的EXPIRES=0,即强制网页每次浏览都必须从网站重新读取(IE后退键实效)
      

  23.   

    http://www.csdn.net/Expert/topic/475/475795.shtm