根据W3学校的说法:
URL编码将字符转换为可以通过Internet传输的格式。 URL只能使用ASCII字符集通过Internet发送。 由于URL通常包含ASCII集之外的字符,因此必须将URL转换为有效的ASCII格式。
我在插入查询后面有一个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());
}
为什么有必要?因为电子邮件地址中的@等字符是在标题重定向中发送的吗?
答案 0 :(得分:3)
根据RFC3986
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
标准要求这样做。
PS:正如您所看到的,@
是一个有效的字符,无需额外编码即可在查询中使用。