php里面的javascript如何破坏$ _GET变量?

时间:2013-06-18 07:53:40

标签: php javascript variables get

我想用Ajax创建登录/注册站点,两者都已完成,但是当它收到$_GET变量时,有一些问题 在体内,有函数log(),这是主要的代码问题

<?php
if($say!=null && $reg=="log")
{
?>
fontid.innerHTML = "<?php echo $say; ?>"
<?php
}
$say="";
?>

$say变量仍将保留,即使有另一个代码可以更改fontid.innerHTML 例如

index.php?say=You%20must%20login%20first&reg=log

然后在我的页面中显示你必须首先登录,好吧,然后我按没有输入登录,会有错误,如“请不要留空字段”,之后如果我按下另一个可能会改变{{ 1}}进入null,$ say值仍将保留...主要的一点是如何破坏$ say ??对不起,如果太长了

2 个答案:

答案 0 :(得分:1)

似乎你在混淆Javascript和PHP,请注意这不是干净的编码,你会在某些时候后悔,因为你的代码将变得不可读。 您的代码出现在哪里,由于$_GET函数,您对log()变量问题的意思是什么?

'之后,如果我按下另一个可能会将fontid.innerHTML更改为null的内容,$ say值仍然会保留' 它没有得到null我认为它得到一个像''这样的空字符串,所以你最好也要求它:if($say!=null && $say!='' && $reg=="log")

有点offtopic但可能对你有所帮助,清理方法可能是: 创建一个文件ajax.php并在那里执行所有ajax机制(可能使用某种$_POST['action'],您可以在切换案例中使用它来执行某些操作。

所有返回都应该是json_encoded,因此您必须处理的数据在返回时看起来总是相同的。 我使用这个函数:

function jsondie($status, $array, $jsoutput){ 
    if(!is_array($array)) { jsondie('error', 'Not an array!', $array); }
    $return_values = array('status' => $status, 
                    'data' => $array,
                    'jsoutput' => $jsoutput);
    return json_encode($return_values);
}

使用(例如)jquery $ .ajax创建您的javascript并使用dataType: 'json' 在返回的数据上,您可以轻松检查您的内容。

jQuery.ajax("ajax.php", dataType: 'json', { action: 'login', username: username, password: password, captcha: captcha },
    function(ajaxdata) {
        if(typeof(ajaxdata.status)=='undefined') { 
            alert('error in your ajax function'); 
            // push that stuff to f12 console for firebug + chrome
            try { console.log(ajaxdata); } catch(e){}
            return false;
        } else if (ajaxdata.status == 'error'){
           // write it to some error dialog or field here 
           fontid.innerHTML = '<span class="error">'+ajaxdata.data+'</span>';
           // flush the returned data to the console
           try { console.log(ajaxdata.jsoutput); } catch(e){}
        } else {
           // all fine, write or do something on success
           //window.location = 'loggedin.php';
           fontid.innerHTML = ajaxdata.data; // this is the data coming from ajax.php
        }
    }

这可能有助于您或其他人为您计划的项目获得更清晰的方法: - )

最高

答案 1 :(得分:0)

正如@ x4rf41(和其他人......)所说,RTM

这是你的确切答案,从文档中复制......

   To unset() a global variable inside of a function, then use the $GLOBALS array to do so:


 function foo() 
 {
     unset($GLOBALS['bar']);
 }