2010-08-23 3 views
5

À peu près ce qu'il dit sur le titre. Je suis en train de se connecter à une base de données Microsoft SQL Server avec un mot de passe qui contient une esperluette:esperluette dans le problème de mot de passe - php

<?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()); 
?> 

Sur une question peut-être liée: Je reçois un « Erreur 101 (net :: ERR_CONNECTION_RESET): Erreur inconnue. "Message quand j'essaye de me connecter.

Comment l'échapper?

Jonesy

+4

Pourquoi avez-vous besoin d'y échapper? –

+2

Donnez-nous la méthode que vous utilisez pour vous connecter à DB, et à quel type de DB ... – canni

+0

ont mis à jour ma question – iamjonesy

Répondre

5

Vous auriez besoin seulement d'échapper à une esperluette dans votre chaîne de requête HTTP si vous passez avec une requête GET, qui vous ne devriez jamais faire parce que transmettrait le mot de passe en texte clair dans votre URL. Utilisez une requête POST et un protocole HTTPS lors de l'envoi de données sensibles.

Vous n'avez pas besoin d'échapper une esperluette dans une requête SQL. Ceci est parfaitement valide SQL:

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

Mais je vous recommande aussi d'apprendre à utiliser les paramètres de la requête:

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

Ensuite, vous ne devez demander comment échapper ce caractère ou ce caractère nouveau. Un paramètre de requête SQL est le meilleur moyen d'envoyer une valeur dynamique sans avoir besoin d'être cité ou échappé.


Re votre question mise à jour:

Recherche de ce message d'erreur me conduit à beaucoup d'autres personnes qui utilisent Google Chrome comme navigateur web, qui obtiennent l'erreur quand ils ont changé leurs paramètres de proxy Internet, ou foiré leur navigateur ou config réseau d'une autre manière. Donc, je conclus que vous avez un problème de réseau, cela n'a rien à voir avec votre code ou votre mot de passe.