Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-url编码的用途?_Php_Urlencode - Fatal编程技术网

php-url编码的用途?

php-url编码的用途?,php,urlencode,Php,Urlencode,根据W3学校的说法: URL编码将字符转换为可通过Internet传输的格式。 URL只能使用ASCII字符集通过Internet发送。 由于URL通常包含ASCII集之外的字符,因此必须将URL转换为有效的ASCII格式 我在insert查询之后有一个url encode语句: $Query = "INSERT INTO $Table_1 VALUES ('0','".mysql_escape_string($forename)."','".mysql_escape_string($surna

根据W3学校的说法:

URL编码将字符转换为可通过Internet传输的格式。 URL只能使用ASCII字符集通过Internet发送。 由于URL通常包含ASCII集之外的字符,因此必须将URL转换为有效的ASCII格式

我在insert查询之后有一个url encode语句:

$Query = "INSERT INTO $Table_1 VALUES ('0','".mysql_escape_string($forename)."','".mysql_escape_string($surname)."', '".mysql_escape_string($username)."', '".mysql_escape_string($password)."', '".mysql_escape_string($email)."')";

if(mysql_db_query ($DBName, $Query)) {
$message = " - You have successfully registered";
header("Location: register.php?message=".urlencode($message));
} else {
die("Query was: $Query. Error: ".mysql_error());
}
为什么有必要?因为电子邮件地址中的@等字符正在标头重定向中发送?

根据

所以这是一个标准所要求的


PS:正如您所见,
@
是查询中使用的有效字符,无需额外编码。

解释还不够吗?(虽然不完全正确)你说不完全正确是什么意思?!出于某种原因,它提到了ASCII,而这里只允许ASCII字符的一小部分。请查看我的答案以了解进一步的解释。
URI           = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
query         = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded   = "%" HEXDIG HEXDIG
HEXDIG        = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
ALPHA         = %x41-5A / %x61-7A   ; A-Z / a-z
DIGIT         = %x30-39             ; 0-9