2017-06-17 4 views
-2

私はPHPを使用し、MySQLデータベースに接続されたウェブサイトを持っています。私はまた、私はコード化したPHPスクリプトのいくつかの機能を持つユーザーを制御するadmindashboardを持っています。テーブルからユーザー名MySQLで"&"のような特殊文字のため、ブラウザのURLの問題

mydomain.com/loginUser2.php?userName=abc&xyz 

との完全なユーザー名ABC & XYZまたは任意のユーザを取るとき

<a href="../loginUser2.php?userName=<?php echo $SQLRow["userid"];?>" target="_blank" class="a">Records</a> 

このコードは、このようなログインURLのリンクを作ります。私はすべてのユーザーのためのリンクをクリックすると、Webブラウザですべてが正常ですが、その後、ユーザーは自動的にPHPの助けを借りてログインします。しかし、任意のユーザー名でシンボルや特殊文字を使用している場合は、現在私は "&"シンボルで問題があります。手動で入力すると自己とWebブラウザでURLを編集すると、&の代わりに%26のリンク作業とユーザーログインが正常にリンクされます。私はちょうどあなたがどのようにユーザがMySQLデータベースに登録されていて、&などのような特殊文字記号を含んでいてもよいので、どのようにしてこのタイプの記号や文字を自動的に処理することができますか?

私はphpMyAdminの編集ユーザー名の列でこのようなユーザー名を更新しようとしました。abc%26xyz私は& =%26のように動作しますが、私は失敗します。

+2

ルック:

はこれを試してみてください。 – sjdaws

+0

質問には関係ありませんが、* "リンクをクリックすると、ユーザーは自動的にphpの助けを借りてログインします" *後のコードで "admin user"が実際にログインする権限を持っていない限り、重大なセキュリティ上の脆弱性が示唆されます。ユーザー...このアプリケーションでは、ユーザー名を渡すことは設計上の選択肢のように思えます。つまり、ユーザーには整数IDの主キーが割り当てられている可能性があります。 –

答えて

-1

urlencode()を使用して特殊文字を送信し、urldecode()を使用してエンコードされた値を取得することができます。

<a href="../loginUser2.php?userName=<?php echo urlencode($SQLRow["userid"]);?>" target="_blank" class="a">Records</a> 

urldecode($_GET['userName']); 
+0

'urldecode()'を使う理由はありませんが、これは自動的に行われます。 – Brad

-1

ブラウザでURLを入力すると、ブラウザはURLをエンコードします。 '&'から '%26'に変換されます。したがって、あなたのloginUser2.phpには、getパラメータ値を受け入れる場所に 'urldecode()'を入れてください。値を 'abc%26xyz'から 'abc & xyz'に再度デコードします。 [ `urlencode`](http://php.net/manual/en/function.urlencode.php)で

urldecode($_GET['userName']); 
+0

'$ _GET ['userName']'は自動的にデコードされます。問題は最初に適切にコード化する必要があるということです。 – Brad