はPHP

2016-12-11 6 views
0

でURLに+および%記号を削除するにはどうすれば私は+%シンボルに問題を抱えているデータベース接続はPHP

を使用せずに入力されたgetメソッドの形式を持つ単純な単一ページのウェブサイトを作成しました新しいURL。

ユーザーが"Aravind Kumar"のような名前を入力すると、example.com/?name=Aravind+kumarのようなURLが作成され、Facebookのリンクを共有するときには%というシンボルもあります。

URL内の%+のシンボルを削除するにはどうすればよいですか?

マイフォーム

<form action="" class="login-form" method="get" accept-charset="UTF-8"> 
<div class="form-group"> 
<input type="text" class="form-control" required id="name" name="name" class="form-control w-40 dis-ib" placeholder="Enter your name" /> 
</div> 
<div class="form-group"> 
<button type="submit" class="btn btn-success btn-block btn-lg">Create Now</button> 
</div> 
</form> 

は、ユーザーが名前を入力すると、それは自動的にこのフォームのそれらのためのURLを作成します:example.com/?name=user

+2

文字は理由によりエスケープされます。それらを変換するだけでは機能を壊すことはありません。 http://stackoverflow.com/questions/4667942/why-should-i-use-urlencode例えば、 '%26'を'& 'にデコードすると、1つの値ではなく2番目のパラメータが開始されます。 – chris85

+0

これにはどんな解決策ですか? –

+1

URLをそのままエンコードします。彼らはプレーンテキスト文字に変更すると、あなたのサーバー上での処理が失われます(または文字に依存しない可能性があります)。 – chris85

答えて

0

GETメソッドは、アクションに変数(それらを追加)を埋め込み、 URL。 POSTメソッドはHTTP要求のエンティティ本体を使用するため、URLには表示されません。

GETからPOSTにフォームのメソッドを変更し

:つまり、次のように変更します。

これに
<form action="" class="login-form" method="get" accept-charset="UTF-8"> 

<form action="" class="login-form" method="post" accept-charset="UTF-8"> 

あなたがPHPを示していないが、私はあなたを解釈していると仮定$ _GETを使用してフォーム変数を作成します。 POSTメソッドを使用する場合は、$ _POST配列を使用して変数を解釈する必要があります。他のドメイン/サイトに投稿している場合は、サイトの要件に応じて2つの方法のいずれかを使用しなければならない場合があります。

EDIT:送信された値をスペース(+記号に変換される)からハイフンに動的に変更する場合は、javascriptを使用してonsubmit()ハンドラを実装するサンプルフォームを以下に示します。フォームが送信される直前に、スペースはハイフンに変更されます。

<html> 
<head> 
    <title>Test Page</title> 
</head> 
<script lang="javascript"> 
function getObj(id) 
{ 
    if (document.getElementById) 
    { 
     //standard browsers 
     return(document.getElementById(id)); 
    } 
    else if (document.all) 
    { 
     //older browsers 
     return(document.all[id]); 
    } 
    else if (document.layers) 
    { 
     return(document.layers[id]); 
    } 
} 

function onSubmit(obj) 
{ 
    var objName = getObj('name'); 
    objName.value = objName.value.replace(/ /i,'-'); //replace spaces with hyphens 
    return true; 
} 
</script> 
<body> 
Hello 
<form action="" class="login-form" method="get" accept-charset="UTF-8" onsubmit="return onSubmit(this)"> 
<div class="form-group"> 
<input type="text" class="form-control" required id="name" name="name" class="form-control w-40 dis-ib" placeholder="Enter your name"/> 
</div> 
<div class="form-group"> 
<button type="submit" class="btn btn-success btn-block btn-lg">Create Now</button> 
</div> 
</form> 
</body> 
</html> 
+0

投稿メソッドはURL取得メソッドを作成しませんURLを作成する:-(任意の解決法? –

+0

"あなたが意味するものを理解できたとは思えないので、詳しく説明してください。現在のURL(フォームのあるURL)に追加することができます。サーバーサイドのPHPによっては、if(count($ _ POST))//何かを実行する条件文を使用して変数がポストされているかどうかを検出できます。 /メインフォームを表示 – byteptr

+0

ユーザーがAravind Kumarのような名前を入力すると、example.com/?name=Aravind+kumarのようにURLが作成されます。Facebook上で共有しているときにGETメソッドを使用しています –