我用php做服务器端,c#的winform做客户端。当A用户登录成功之后,会显示B界面.当A用户在B界面进行操作时,服务器怎么判断这个A用户已经登录过,如果没登陆的话会提示他没有权限。

解决方案 »

  1.   

    winform不懂, php用session就可以了。 
      

  2.   

    php登陸之後寫入session,讓session存入數據庫
    不管是winform還是php都能簡單控制了.如果服務器安裝了memcache,那麼也可以把session存入memcache.這樣就算winform無法取得php的session值,也可以直接從memcache里取值.
      

  3.   

    可以使用CAS统一认证
    http://www.ibm.com/developerworks/cn/webservices/ws-casestudy/part4/
      

  4.   

    给个参考哈。http://blog.csdn.net/lcawen88/article/details/8534978
      

  5.   

    我也是用c#做客户端的,这个很简单哦,细节我不说了,大体方法:
    首先,客户端登录后,使用HttpWebRequest发送HTTP请求,假设那个页面是login.php,你要在里面写一段
    将post数据存入session的代码(类似 $_SESSION["username"] = $_POST["..."]),然后C#发送HTTP请求调用这个页面可以将用户登录信息写入SESSION,之后又另一个管理页面是manager.php,这个页面里要有一段
    判断 $_SESSION["username"]的代码,并且用 echo $_SESSION["username"] 的方法将其输出,这样C#登录manager.php时候就可以获取$_SESSION["username"],将它和用户名匹配,存在并且正确就进入管理界面,否则在客户端弹出警告C#用HttpWebRequest,下面这段代码可以在客户端获取服务端PHP页面的值
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://localhost:81/console_revised/" + page);
                data = encoding.GetBytes(postData);
                myRequest.Method = "POST";
                myRequest.ContentType = "application/x-www-form-urlencoded";
                myRequest.ContentLength = data.Length;
                Stream newStream = myRequest.GetRequestStream();
                newStream.Write(data, 0, data.Length);
                newStream.Close();
                HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
                StreamReader reader = new StreamReader(myResponse.GetResponseStream(), encoding);
                string content = reader.ReadToEnd();
                reader.Close();
                myResponse.Close();