加号在服务器端消失?

发布于 2025-01-02 21:24:56 字数 2055 浏览 2 评论 0原文

我现在无法查看 mysql 表...但我不认为“+”将其放入表中。

我检查了 magic_guotes 并且它已打开。然而 magic_quotes 不应该对“+”号做任何事情,因为它只涉及数据库使用的字符的转义。

另外,我检查了客户端和服务器(javascript 和 php)上的正则表达式,没有任何内容可以删除“+”符号。

我也使用 htmlentites() 但我不相信 + 是一个 html 实体,即使它是,这也只能使它成为一个实体而不是一个字符。

这留下了 json_encode,但我能够在编码之前将字符回显给客户端,并且仍然可以看到没有“+”符号。

我已经检查了所有 5 个地方,但无法确定我的 + 号要去哪里...看起来 mysql 数据库正在返回 + 号应该在的地方的空格。

Ajax 序列化

function ajax_serialize( form_name )
{
    var return_string='',  
        form_elements=document.forms[form_name].elements,
        iterator;  
    for(iterator = 0; iterator < form_elements.length; iterator++)
    {
        if( form_elements[iterator].name )
        {
            if( form_elements[iterator].type === 'checkbox' && form_elements[iterator].checked === false )
            {
                return_string += form_elements[iterator].name + "=0&";
            }
            else
            {
                return_string += form_elements[iterator].name + "=" + form_elements[iterator].value+"&";
            }
        }
    }
    return_string = return_string.slice( 0, -1 );
    return return_string;
}

Ajax 推文

function interface_tweet()
{
    var form_name = 'tweet',
        response_div = form_name + '_response',
        tw_text = new Text(form_name),
        tw_message = new Message(response_div);

    if( Constant.VALIDATE_ON === 1 )
    {
        if( !tw_text.checkEmpty() ) 
        {
            tw_message.display('empty');
            return;
        }

        if( !tw_text.checkPattern('tweet') ) 
        {
            tw_message.display('tweet');
            return;
        }
    }

    Ajax.repeatUseAjaxObject( Constant.GATEWAY, ajax_serialize( 'tweet') + '&ajax_type=ControlTweet_add' , ajax_tweet ,'tweet_fill' );
    document.getElementById( 'tweet_input' ).value='';
    document.getElementById( 'tweet_response' ).innerHTML='';
}

I can't look at mysql tables right now...but I don't think '+' is making it into the table.

I checked magic_guotes and it is turned on. However magic_quotes should not do anything to the '+' sign as it only relates to escaping for characters the database uses.

Also, I checked my regular expressions on the client and server (javascript and php) and there is nothing to remove '+' signs.

I also use htmlentites() but I do not believe + is an html entity and even if it was this should only make it an entity wrather than a character.

This leaves json_encode, but I was able to echo the characters back to the client before encoding and could still see there was no '+' sign.

I've checked all 5 places and can not determine where my + sign is going...it seems the mysql database is returning a space where the + sign should be.

Ajax Serialize

function ajax_serialize( form_name )
{
    var return_string='',  
        form_elements=document.forms[form_name].elements,
        iterator;  
    for(iterator = 0; iterator < form_elements.length; iterator++)
    {
        if( form_elements[iterator].name )
        {
            if( form_elements[iterator].type === 'checkbox' && form_elements[iterator].checked === false )
            {
                return_string += form_elements[iterator].name + "=0&";
            }
            else
            {
                return_string += form_elements[iterator].name + "=" + form_elements[iterator].value+"&";
            }
        }
    }
    return_string = return_string.slice( 0, -1 );
    return return_string;
}

Ajax Tweet

function interface_tweet()
{
    var form_name = 'tweet',
        response_div = form_name + '_response',
        tw_text = new Text(form_name),
        tw_message = new Message(response_div);

    if( Constant.VALIDATE_ON === 1 )
    {
        if( !tw_text.checkEmpty() ) 
        {
            tw_message.display('empty');
            return;
        }

        if( !tw_text.checkPattern('tweet') ) 
        {
            tw_message.display('tweet');
            return;
        }
    }

    Ajax.repeatUseAjaxObject( Constant.GATEWAY, ajax_serialize( 'tweet') + '&ajax_type=ControlTweet_add' , ajax_tweet ,'tweet_fill' );
    document.getElementById( 'tweet_input' ).value='';
    document.getElementById( 'tweet_response' ).innerHTML='';
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自我难过 2025-01-09 21:24:56

这是您应该拥有的

return_string += encodeURIComponent(form_elements[iterator].name) + "=0&";

return_string += encodeURIComponent(form_elements[iterator].name) + "=" 
               + encodeURIComponent(form_elements[iterator].value)+"&";

如果您的 form_elements[iterator].name 没有任何需要编码的符号,那么您可以删除它的 encodeURIComponent

This is what you should have

return_string += encodeURIComponent(form_elements[iterator].name) + "=0&";

and

return_string += encodeURIComponent(form_elements[iterator].name) + "=" 
               + encodeURIComponent(form_elements[iterator].value)+"&";

if your form_elements[iterator].name does not have any symbols that should be encoded then you may remove encodeURIComponent for it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文