Ses derniers messages sur les forums
mais en lançant phpmyadmin, j'avais un message d'erreur me disant que j'avais une faille de sécurité concernant l'utilisateur par défaut root
Quel était le message exact ?
j'ai fais une erreur en renommant l'utilisateur root et en attribuant un mdp à cette nouvelle entrée
Via PMA ?
Est-ce que tu es root sur le système qui héberge cette base de données ?
du coup tout mon schemat de bases à disparu !
Un point d'exclamation suffit. Et un correcteur orthographique ne serait pas du luxe ;)
Je pense que tu ne vois plus tes tables parce que tu ne disposes plus des privilèges d'accès sur tes tables. Est-ce que ton WP continue d'afficher les articles ?
Quelques questions qui peuvent nous aider :
- est-ce que ton WP est installé localement ?
- si non, quel type d'hébergement ? Quel type d'accès à l'hébergement ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Pour une ressource de l'Internet, le mieux c'est de demander à ton moteur préféré. Peut-être que tu trouveras quelque chose d'intéressant.
Maintenant, tu peux aussi réfléchir au problème et inventer une solution. Si tu ne veux pas, il doit bien y avoir un logiciel déjà fait qui aura le mérite de ne pas avoir les trous de sécurité du débutant ;)
Déjà il faut que tu te poses des questions, puis que tu essaye d'y répondre. À mon sens, il y a les questions suivantes à se poser :
- qu'est-ce qu'une messagerie interne ?
- faut-il être identifié (donc inscrit et authentifié) pour utiliser le service ?
- faut-il envoyer les messages via un autre service (smtp, jabber, etc) ?
Le mieux c'est que tu circonscrive ce que tu souhaite réaliser, comme ça on pourra t'orienter.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ce sujet est vieux de plus de 7 ans, ce n'était pas la peine de le réveiller, je crois.
Cependant, pourquoi pas en JavaScript ? JavaScript est avant tout un langage côté serveur, qui peut corriger n'importe quel en-tête.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Forcément, si tu vires la fonction fondamentale qui gère les événements du XHR, ça va beaucoup moins marcher.
xmlHttpRequest, XHR pour les intimes, appelle onreadystatechange sur lui-même lorsque son état change. C'est ce qui permet de gérer l'asynchronicité.
Et c'est là que je comprends ton erreur. En fait, tu as transformé handleSendChat en sendChatText, et tu l'appelle depuis le form.submit.
Ça ne peut pas marcher.
Il faut que tu respecte un certain workflow. L'une des difficulté de JavaScript, c'est son approche fonctionnelle et événementielle.
Je te conseille de tout réécrire depuis zéro, c'est trop compliqué à ton niveau de faire des modifications dans du code mal écrit.
Une autre chose : utilises un Framework JS.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Où est défini handleSendChat ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Il manque encore des morceaux, mais j'y vois un peu plus clair :)
Quelques remarques :
- la construction de tes requêtes est problématique. En effet, elles sont toutes ouvertes à injections SQL.
Par exemple (note que j'utilise sprintf pour améliorer la visiblité, car la concaténation de chaînes, en plus d'être inefficient est illisible) :
$sql = sprintf('insert into poll_votes (choice) values (\'%s\')'
, $db->real_escape_string($choice));
- je vois que tu utilises utf8-decode avant de passer à mysql_real_escape_string. Tu n'as pas besoin de faire ça si tu configure correctement MySQL à l'aide de
mysql_set_charset.
- id_contact, id_message : je sais que certaines personnes aiment répéter ce qu'on sait déjà, mais je n'en fait pas parti. Pour moi, l'ID d'une table doit s'appeler 'id', et les références étrangères 'foreign_table_id' (où 'foreign_table' est le nom ou l'alias de la table référencée).
- pourquoi un int(5) ? Si c'est pour optimiser, c'est un peu tôt.
- n'utilises pas d'abréviations. Les abréviations sont quelque chose de personnel, elles sont difficilement partagées.
- l'attribut onclick ne peut contrenir que du JavaScript. Il est inutile, et même illégal, de préciser 'javascript:'.
- lorsque tu fais du templating en PHP, préfère les construction if/endif, ce sera plus lisible. Par exemple :
<?php /* M'afficher une zone de saisie et d'affichage (DIV) par contact afin de
communiquer avec ce dernier */ ?>
<?php while ($data_fav = mysql_fetch_array($req_mes_fav)): ?>
<?php /* Je voudrais afficher la page Contact.php dans ce div avec rafraichissement
toutes les 2 secondes */ ?>
<?php $contact_id = htmlentities($data_fav['id_contact'], ENT_COMPAT, 'UTF-8') ?>
<div id="div_chat<?php echo $contact_id ?>"
style="height: 300px; width: 500px;
overflow: auto; background-color: #EEEEEE; border: 1px solid #DDDDDD;"> </div>
<form id="frm" name="frm" onsubmit="return blockSubmit('<?php echo $contact_id ?>');"><br />
<input type="text" id="txt_message<?php echo $contact_id ?>" style="width: 147px;" />
<input type="button" name="btn_chat" id="btn_chat" value="Envoyer"
onclick="sendChatText('<?php echo $contact_id ?>');" />
</form>
<?php endwhile ?>
- sendReq n'est jamais initialisé (je pense que c'est le nœud de ton problème ici). Quelle est l'URL que le XHR va taper côté serveur pour récupérer les données ?
Je t'invite à lire la
réponse rapide que j'avais faite à côté, sur la méthodologie pour employer des requêtes AJAX.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
On n'a pas la coloration syntaxique avec JS, mais au moins on a l'indentation, alors utilises la balise code du bbcode du forum ;)
Ça m'a l'air confu. Pourquoi parles-tu d'un while dans ton point d'entrée en PHP ?
Je t'invite à lire la
documentation de setTimeout.
De plus, c'est un problème de JS, et tu gagnerais à utiliser Firebug pour tenter de déboguer ton code.
« Ça ne marche pas » n'est pas un constat acceptable. Il faut que tu dises ce que tu veux faire, comment tu le fais, et le résultat obtenu.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Je suppose que, dans l'idée, tu souhaites vérifier un champ pendant qu'il est saisi, ou sauvegarder le formulaire pendant sa rédaction.
Dans ces cas, il te faut deux choses :
- du JavaScript côté client pour gérer les événements
- du PHP côté serveur pour gérer les mises à jour.
Quand je mets en place un tel service, je créé un point d'accès (du genre /ajax.php pour rester basique), qui renvoie un JSON et qui défini pleinement le code de retour HTTP.
<?php
$result = array('success' => false, 'payload' => null, 'errors' => array());
/* Traitement de la requête
*/
header('Content-type: application/json; charset=utf-8');
if($result['success'])
header('Status 200 OK');
else
header('Status 400 Bad Request');
echo json_encode($result);
/* Cet objet JSON sera envoyé:
{ success: false
, payload: null
, errors: []
}
*/
Tu peux utiliser ce squelette pour construire ton point d'accès.
Ensuite, côté client, il faut que tu gère deux choses : les événements du formulaire ; le lien AJAX.
Je cette partie, je te conseille d'utiliser un framework tel que jQuery. Ça t'évitera un tas problèmes pénibles liés à la gestion des navigateurs.
Voici une ébauche (non testée), mais assez typique. Il faut que tu te familiarise avec le concept de programmation événementielle. $ est un alias de jQuery.
// Chargement de l'écouteur
$(document).ready(function () { new form_listener('form') })
// Définition de l'écouteur
window.form_listener = function(search_path)
{
var listener = this;
var nodes = $(search_path);
var access_point = '/ajax.php';
// Pour chaque contrôle il faut attacher un écouteur:
nodes.filter(':input').focusout(function () { return listener.update(this, arguments) });
// La fonction qui écoute les contrôles
this.update = function(node, args)
{
// Tu construis la requête que tu veux envoyer
var payload = { };
// Tu envoyes à ton point d'accès
$.ajax(access_point, payload)
.done(function() { listener.feedback(this) });
}
// La fonction qui gère le retour de ton appel AJAX
this.feedback = function(xhr)
{
}
}
Bien sûr, il y a pas mal de bouleau qui reste à faire.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Tu ne peux pas :D Mais je peux vérouiller.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Désolé pour le lien, j'm'ai vautré :D J'ai corrigé.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.