connect_db();定义了吗?
另外你定制cookie变量的代码也没有。还有如果你定义了cookie变量就不用用global来声明。
一般来说,Cookie通过HTTP Headers从服务器端返回到浏览器上。服务器端在响应中利用Set-Cookie header来创建一个Cookie,然后,浏览器在它的请求中通过Cookie header包含这个已经创建的Cookie,并且反它返回至服务器,从而完成浏览器的论证。 
浏览器创建了一个Cookie后,对于每一个针对该网站的请求,都会在Header中带着这个Cookie;不过,对于其他网站的请求Cookie是绝对不会跟着发送的。而且浏览器会这样一直发送,直到Cookie过期为止。另外关于cookie还有一些限制---这只是我发现的。
首先是必须在HTML文件的内容输出之前设置; 
其次不同的浏览器对Cookie的处理不一致辞,且有时会出现错误的结果。比如:MS IE+SERVICE PACK 1不能正确处理带域名和路径的Cookie,Netscape Communicator 4.05和MS IE 3.0不能正确处理不带路径和时间的Cookie。至于MS IE 5 好象不能处理带域名、路径和时间的Cookie。这是我在设计本站的页面时发现的。 
第三个限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。 
(由于Cookie最初由Netscape定义的,所以附上Netscape公司关于Cookie的官方原始定义的网址:http://www.netscape.com/newsref/std/cookie_spec.html)浅妄薄见,望与斟酌

解决方案 »

  1.   

    试试:
    global $loginname;最好在函数外声明
    global $loginname
    function xxxx(){
    另外,你最好用参数传递方式:
    function dellmsg($user,$action,$msgid){
    ..
    ....
    ..}
    这样会比较好
      

  2.   

    我已经习惯使用$_COOKIE来引用COOKIE变量了.
      

  3.   

    会不会还是register_globals=Off的问题?改成On试试
      

  4.   

    肯定是全局变量的问题,确定你函数内部所有的外部变量都要先用global声明。所以前面要加上:
    global $touser;
    global $action;
      

  5.   

    多写个为,全局变量的问题。
    global $touser,$action,$loginname;
    搞定。