【问题标题】:ampersand in password problem - php密码问题中的&符号 - php
【发布时间】:2010-08-23 16:20:59
【问题描述】:

和标题上说的差不多。我正在尝试使用包含 & 符号的密码连接到 Microsoft SQL Server 数据库:

<?php
    $mssqlHost = "Reports.autotask.net,1433"; 
    $mssqlUser = 'NetworkROI';
    $mssqlPass = 'Rosdcpe7&Essdcscpalda'; //has been changed
    $mssqlATDB = 'TF_3745000_WH';
    $SQLConnect = mssql_connect($mssqlHost,$mssqlUser,$mssqlPass) 
        or die('Could not connect to SQL Server on '.$mssqlHost
        .' '. mssql_get_last_message());
?>

关于一个可能相关的问题:我收到“错误 101 (net::ERR_CONNECTION_RESET):未知错误”。当我尝试连接时的消息。

我该如何逃脱它?

琼斯

【问题讨论】:

  • 为什么要转义呢?
  • 向我们提供你用来连接数据库的方法,以及连接什么样的数据库...
  • 更新了我的问题
  • 很高兴您在公开发布密码后更改了密码! :)

标签: php sql-server escaping


【解决方案1】:

如果您使用 GET 请求传递 HTTP 请求字符串,则只需在 HTTP 请求字符串中转义一个 & 号,您绝不应该这样做,因为这会在您的 URL 中传输明文密码。发送敏感数据时使用 POST 请求和 HTTPS 协议。

您不需要在 SQL 查询中转义与号。这是完全有效的 SQL:

SELECT ... FROM Accounts WHERE user = 'Jonesy' AND password = 'M&Ms are tasty'

但我也建议学习使用查询参数:

SELECT ... FROM Accounts WHERE username = ? AND password = ?

那么你就不必再问如何转义这个字符或那个字符了。 SQL 查询参数是发送动态而不需要被引用或转义的最佳方式。


关于您更新的问题:

搜索该错误消息后,我发现了许多其他使用 Google Chrome 作为其网络浏览器的人,他们在更改 Internet 代理设置或以其他方式搞砸浏览器或网络配置时收到错误消息。

所以我断定你有网络问题,它与你的代码或密码无关。

【讨论】:

    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多