是这样的,我做的是WAP程序,所以必须地址上有sid(其实是MD5),才能判断用户信息是否登陆!
例如这个WAP用Asp开发的程序,地址上是这样判断的:
http://8zntx.com/myfile.asp?siteid=956&userid=162621&sid=7e77950ca2332e089_98850471131_6262_123167_960这条:sid=7e77950ca2332e089_98850471131_6262_123167_960就是判断用户是否登陆!
小弟没有思路,不知道如何实现呀!判断sid是否有效,我倒是写好了!
if (!isset($_COOKIE["sid"]) or $_COOKIE["sid"]==""){
   $sid="Null";
}else{
$sid=$_COOKIE["sid"];
}不知道如何验证sid哦?
谁能写个例子看看呢?或许网上有教程,但是我只看了php100的视频教程,也才看了10多篇,还是有部分没看透!
由于本人有研究过别人0用asp写的程序,研究了半年,所以才有能写出自己的php程序!
当然wap程序其实不用学那么多php,但是我想日后在慢慢学吧!
看教程,还不如自己琢磨,遇到不懂的只要有教程我都会去看!
但是这个教程貌似没有哦?

解决方案 »

  1.   

    用户登陆后将sid保存在数据库中,下次访问的时候只要将用户传递来的sid和数据库中的sid比较就可以了。
    用户登出的时候将数据库中的sid清空
      

  2.   

    额,不是这样的啊!
    sid是用户注册的时候,用MD5,密码+时间,生成的MD5,做Sid!
    sid,也就是WAP程序中的用户识别码!这是我朋友写的一段判断用户信息的自定义函数!
    只是我读不懂而已,而且我也不想用他的!这样复制别人的,自己永远也是只菜鸟!<?
    function name($id){
     global $conn;
     $myid=nid();
    if ($myid==$id){
     return "我自己";
    }else{
    $sql="select * from `friend` where `nid`=$myid and `fid`=$id and `show`=1";
    $rs=mysql_query($sql);
    if ($row=mysql_fetch_array($rs)){
     if ($row["name"]==""){
       $yy=false;
       }else{
       return $row["name"];
       $yy=true;
      }
    }else{
    $yy=false;
    }
     mysql_free_result($rs);
    if (!$yy){
    $sql="select name from user where id=$id";
    $rs=mysql_query($sql);
    if ($row=mysql_fetch_array($rs)){ 
        return $row['name'];
     }else{
    return "游客" ;
     }
     mysql_free_result($rs);
         }
    }
    }function name2($id){
    $sql="select name from user where id=$id";
    $rs=mysql_query($sql);
    if ($row=mysql_fetch_array($rs)){ 
        return $row['name'];
     }else{
    return "游客" ;
     }
     mysql_free_result($rs);

    }


    function nid(){
     global $conn,$sid;
    $sql="select id from user where sid='$sid'";
    $rs=mysql_query($sql);
    if ($row=mysql_fetch_row($rs)){ 
        return $row[0];
     }else{
    return 0 ;
     }
     mysql_free_result($rs);
    }

    function must(){
    if ($GLOBALS['sid']=="Null"){
    $a=$_SERVER['SCRIPT_NAME'];
        $b=$_SERVER['QUERY_STRING'];
    $url="$a?$b";
    setcookie("login_back_user", $url, time() + 60*60*24*30);
    header("location: login.php");
    }
    }function login(){
     global $conn,$sid;
    $sql="select sid from user where sid='$sid'";
    $rs=mysql_query($sql);
    $row=mysql_fetch_row($rs);
    if (mysql_num_rows($rs)>0){ 
         $sid=$row[0];
     setcookie("sid", $sid, time() + 60*60*24*30);
     }else{
    $sid="Null" ;
    setcookie("sid", "Null", time() + 60*60*24*30);
     }
     mysql_free_result($rs);
    }function response(){
     global $sid;
        $nid=nid();
    $ip=$_SERVER["REMOTE_ADDR"];
    $name=name($nid);
    $a=$_SERVER['SCRIPT_NAME'];
        $b=$_SERVER['QUERY_STRING'];
    $url="$a?$b";
    $time=date("y-m-d",time());
    $time2=date("Y-m-d H:i:s",time());
    $print="$time2~$nid~$name~$url~$ip~$sid\r\n";
      $james=fopen("log/$time.log","a");
      fwrite($james,"$print");
      fclose($james);
    }?>
      

  3.   

    注意,很多低端手机不支持cookie.如果你想让你的程序载低端手机上也能用,就不要用cookie.
    如果不在意,那你觉得有cookie了,还需要sid吗??sid可以是md5(用户名.用户ID.登陆时间.登陆IP);//你还可以加一些其他的参数进去。不需要可以解密的字符串。
    因为你参数后面有uid.
    每次执行时,从数据库里查询出该uid的用户名.用户ID.登陆时间.登陆IP,并md5,然后判断该值是否和sid一样。
    一样则表示登陆了。
    但这样需要每次或定时去查询数据库。还有种方式是,你把sid做成可以解密的并带时效的字符串,如dz里的authcode函数类似。