Connexion à sql free depuis un autre domaine

Bonjour à tous,
je voudrais me connecter à ma base de donnée Free depuis un site qui n’est pas hébergé chez Free.

J’ai testé le code suivant :

<?php $sql=mysql_connect('sql.free.fr', '[login]', '[mdp]'); mysql_select_db('[bdd]',$sql); $requette="INSERT INTO mail VALUES ('tata', 'toto')"; mysql_query($requette, $sql) or die("ECHEC SQL ".mysql_error()); mysql_close(); ?>

Sauf que lorsque je lance ma page PHP, j’ai le message d’erreur :
ECHEC SQL Lost connection to MySQL server at ‘reading initial communication packet’, system error: 111

Sachant que si j’exécute le même code sur une page hébergée par Free (en remplaçant sql.free.fr par localhost) ça fonctionne !
Savez-vous comment résoudre ce problème ??

Merci d’avance de vos réponses :wink:

Tu ne pourra pas.
Seul les sites hébergés par free ont accès à la base de données free.
Tu peux éventuellement créer un webservice sur une page free et l’appeler depuis ton autre site.

[edit] et si tu veux une explication, elle est simple : vu qu’il s’agit d’un hébergement gratuit, ils le bride pour éviter des accès non souhaités (et en fait, tu n’auras jamais accès à ta base que ta base en hébergement mutualisé, plus encore en gratuit).
Edité le 02/05/2013 à 19:51

Mince, ça, ça m’arrange pas !

Bon alors puis-je faire l’inverse. J’ai un nom de domaine (sportingclubplaisance.org) hébergé chez o2switch. Visiblement dans mon panneau de contrôle je peux ajouter des permissions d’accès à des hôtes.

J’ai essayé plusieurs config mais je n’arrive pas à me connecter à ma BDD SQL sur sportingclubplaisance.org depuis Free. “sql.sportingclubplaisance.org” ne semble pas fonctionner, j’ai l’erreur :
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /mnt/136/sdb/e/6/scp.artsmartiaux/test.php on line 3
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/136/sdb/e/6/scp.artsmartiaux/test.php on line 5

Une idée ? Merci

Je te conseillerai alors d’utiliser ton hôte :slight_smile:
Pourquoi faire une connexion à distance alors que (je suppose) tu as sur cet hôte l’hébergement web + sql ?

Et je ne suis pas sûr que ces permissions soient gérées : si tu veux que l’extérieur tape sur la base de données, il faut que les ports soient accessibles depuis l’extérieur. Ce que tu dois avoir, ce sont des permissions pour un lan (ie: chez le même hébergeur).

Bon ok je vais repartir de 0.
J’ai un site internet hébergé sur un domaine acheté. Et je voudrais envoyer un mail au travers d’un formulaire.
Le problème est que ce domaine a été (je ne sais pas pourquoi) blacklisté par certains organismes, donc le mail envoyé est considéré comme spam.
Je voudrais donc utiliser mon compte Free pour exécuter la fonction d’envoie de mail, grâce à une page PHP.

Mon problème est donc de faire passer d’une page PHP (celle sur mon site) à l’autre (celle sur Free qui ne fait que envoyer un mail) tous les paramètres de mon mail : destinataire, objet, message texte et message html.

Je pense que faire passer ça par URL (avec $_GET) c’est vraiment galère (étant donné la longueur du message du mail). Je cherche donc d’autres solutions : passer par base de donnée SQL, utiliser un include (mail j’ai l’impression que ça ne marchera pas car l’expéditeur du mail sera celui de mon site et pas de Free), faire des variables de session (mais ça n’a pas l’air de marcher quand on est sur 2 sites différents) …

Avez-vous une idée de comment je pourrais faire ?
Merci d’avance

Je vois plusieurs méthode pour résoudre ton problème. Le get n’est pas une bonne idée car pas trop sécurisé et surtout limite à une chaine de 255 caractère. Tu peut utiliser un post ça fera bien l’affaire.

Tu peut aussi créer un fichier .txt ou xml sur ton serveur et ensuite lancer une commande sur ton free pour grab le fichier et le traiter. Une solution un peu poporc, serai d’avoir une page php sur ton serveurs qui traite le mail et créer un fichier xml, et dans cette page charger une iframe de ton free, qui envoit le mail.

Tu peut aussi tout faire en ajax bien sur. Mais bon le mail en php chez free, ça sera encore moins tolérant qu’ailleurs, t’est limité en nombre de mail par jours je crois

Tu peux faire un webservice sur ton autre domaine, non banni, et envoyer les informations nécessaires :

un credential pour éviter que des gens utilisent ton webservice pour envoyer des mail
le sujet du mail
le contenu du mail
les émetteurs et destinataires

Tu peux par exemple simuler l’envoi de variable POST -> blog.sherifmansour.com…

Wep Curl est pas mal pour ce genre de taff :slight_smile:

Merci à tous pour vos propositions ! :slight_smile:
Vraiment intéressant ce Curl. Je ne connaissais pas du tout. Ca m’a permet de faire un POST virtuel pour récupérer la valeur de variables dans ma page Free.

J’ai juste un petit problème qui persiste.
Si j’envoie un mail (avec mon code sur la page Free) en utilisant la méthode GET (et donc en mettant dans la barre d’adresse la valeur des variables) ça fonctionne correctement. Par contre si j’utilise POST (et que j’appelle cette page depuis mon site banni avec Curl), alors je ne reçois pas le mail sur ma boite Gmail, mais je le reçois sur ma boite SFR (j’ai 2 adresses). Bizarre …

J’avais trouvé un truc comme quoi il ne fallait pas utiliser les marqueurs rn (pour sauter des lignes) avec Gmail, mais uniquement n. Après cette modification les mails fonctionnaient. Mais avec Curl ça ne fonctionne plus :frowning:

Une idée ? Merci

Oui curl est vraiment très très bon !

Par contre les mail, c’est vraiment très très chiant je me souviens à l’époque ou j’avais du coder un truc du genre… Certain hébergeurs banissent certaines balises ou alors balance le mail dans le spamm. A l’époque j’avais même vu que si tu pointait sur du hotmail et que l’objet était pas correcte ( du genre 3 mot mal écrit ) ça tombait dans le spamm.

Après pour ton probleme de rn et de n, pourquoi ne met tu pas le mail en html, et comme ça t’utilise des br. Et par pas dans un delire avec des div, à part les table pas grand chose ne passe.

Les mails HTML passent selon le client mail utilisé; après, c’est sûr que si en face tu as un webmail, tu peux oublier le formatage.
Et sinon, tu peux encoder le contenu du mail avec base64_encode -> fr2.php.net…
Et faire la conversion \r\n -> \n depuis le serveur envoyant les mails, selon le destinataire.

En fait j’ai utilisé le script du Site du Zéro : www.siteduzero.com…
Ce script utilise retours à la ligne pour le boundary et les en-tête. Mais un test est fait un début : si l’adresse est hotmail, msn ou live, on utilise n à la place de r. J’ai donc rajouté gmail à ce test. Ca fonctionnait, mais avec Curl et POST ça fonctionne plus !

Comment utiliser la fonction base64_encode ? Si je l’encode le webmail sera capable de le décoder par lui-même ? J’encode quoi avec ? Le texte de mon mail ?

Non, mais tu vas devoir décoder ton mail avec base4_decode.

Toutes mes excuse, en fait c’était une erreur de codage.
Donc quand je fais des essais avec une page qui contient du Curl et qui appelle ma page Free pour envoyer un mail (qui récupère des données POST) ça fonctionne parfaitement ! :slight_smile:

Mais (et oui malheureusement il y a un mais), lorsque je copie ce même script Curl dans la page de mon site où je voudrais utiliser la fonction, ça ne fonctionne plus (quelque soit l’adresse mail utilisée). Pourtant j’ai fait de copier/coller !
Est-ce que c’est parce que mes lignes Curl sont à l’intérieur d’une fonction PHP (fonction qui est appelée bien évidemment), ou alors car mes lignes Curl sont appelées à la suite d’un vrai POST récupéré d’un formulaire HTML …

Je sens que j’approche du but, mais il reste une marche à franchir :frowning:

Je dois t’avouer n’avoir jamais utilisé CURL, donc pour ça, je laisse riton répondre (vu qu’il semble connaître:)).
Tu peux laisser le code ceci étant (avec pastebin.com !), je verrais ce que je peux faire :slight_smile:

Attention Le POST ne sécurise rien du tout. Il donne juste l’impression que “ça se voit pas”.


[quote="Sans-Nom"] Les mails HTML passent selon le client mail utilisé; après, c'est sûr que si en face tu as un webmail, tu peux oublier le formatage. [/quote]

Les webmails modernes le gèrent, non ?

Sinon pour les retours chariot, je pense pas que faire ‘\r\n’, gène qui que ce soit. A ta place j’opterais pour cette solution quelque soit les destinataires.
Edité le 06/05/2013 à 15:39

Je finis par en perdre mon PHP !!

Je fais quelques tests d’envoie d’email avec Curl&Post intégré dans la page qui m’intéresse.
Des fois ça marche, des fois ça marche pas ! J’ai l’impression que si je renomme le nom de la page PHP, alors ça fonctionne (réception du mail), la 1ere fois, mais ça ne fonctionne plus les fois suivantes ! Incroyable !!
Et le mail n’est même pas considéré comme spam, il a tout simplement disparu !

@acidbao : la balise rn pose des problèmes à Gmail (j’en ai fait plusieurs fois l’expérience, et je l’ai trouvé dans un forum), ainsi qu’à (d’après le site du Zéro) Hotmail/Msn/Live. Pour que ça marche il faut la remplacer par la balise n uniquement.

Je viens de faire un test et chez moi que ce soit n ou rn, ça marche pareil avec gmail.
J’utilise ça pour envoyer le mail.


exec ('echo -e "Subject: Sauvegarde routeur\r\n\r\n\r\nRouteur a effectué le backuprn\r\nCdlt\r\n" | mini_sendmail -v -ssmtp.free.fr -fadresse_source@yahoo.fr adresse_dest@gmail.com', $ret);

(mini_sendmail est spécifique à mon routeur mais c’est comme sendmail)

J’utilise pas directement la commande mail pour des questions de limitations de mon archi mais le contenu du mail est pareil.
Edité le 06/05/2013 à 16:23


Sachant que le est le standard pour les en-êtes SMTP, ça parait logique d'utiliser le même séparateur de lignes dans le corps du message (même si ça fait pas parti de la RFC)

+1 sur le côté sécurisé, mais pas sur le côté taille :slight_smile: Je veux dire, pour envoyer des mails, donc du contenu, je ne le ferais jamais en GET “simple”.

gmail le gère (je reçois même des mailings list en plein HTML), ensuite c’est cas par cas, selon la configuration et tu n’as pas de garanties que les trucs complexes fonctionnent (d’où l’intérêt du lien “visualiser ce mail” ;)).

Pour le SMTP, je ne me souviens plus, mais tu t’en fous du rn pour la partie corps : c’est effectivement rn pour les entêtes, mais pour le corps, il faut qu’il se termine par un point si j’ai bon souvenir.

Merci pour toutes ces réponses, mais bon finalement j’ai réussi à envoyer mon mail et qu’il soit reçu par Gmail ou par les autres. Donc les problème de n ou rn sont réglés.

Mais par contre ce que je ne comprends pas c’est pourquoi mon script fonctionne la première fois, et plus les fois suivantes. Si je remet exactement le même code dans une page portant un nom différent, ça fonctionne la première fois puis ça ne fonctionne plus les fois suivantes !! :frowning:

Quelqu’un a une idée d’où ça peut venir ?