Modifier un statut

Fermé
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010
- 18 févr. 2010 à 18:46
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
- 25 févr. 2010 à 21:10
Bonjour,
Bonjour à tous, j'ai voulu faire un projet il y a peu de temps qui est un Tool Game Master pour le jeu Metin2.
Alors voila, je suis bloquer pour le ban d'un compte.
Je vous explique ça plus en détail:
Pour bannir un compte il faut insérer l'id de compte dans la zone de texte que j'ai mis.
Voila donc le code de la case:

<form method="post" action="ban.php">Nom
du compte : <input name="account" maxlength="100" type="text" />

<input value="Valider" type="submit" /></b>
</form>

Jusqu'à là, tout va bien. Je vais vous donner le code de mon PHP:

<?php
//On se connecte à la base de données
mysql_connect("*.**.***.***", "****", "******");
mysql_select_db("account");

//on fait ça
$account=$_POST['account'];
$sql="UPDATE account SET status='BAN' WHERE login='$account'";
?>

Le compte <?php echo $_POST['account']; ?> à bien
été banni !


Mais voila, quand je me connecte a ma base de donnée, je regarde dans la base et le compte n'est toujours pas bannis... je ne comprends pas...
Merci d'avance a ceux qui pourront m'aidés!!
(Je vous donne le message d'erreur si ca peut aider: Warning: include(config.php) [function.include]: failed to open stream: No such file or directory in /home/frenchpserv/www/ban.php on line 2

Warning: include(config.php) [function.include]: failed to open stream: No such file or directory in /home/frenchpserv/www/ban.php on line 2

Warning: include() [function.include]: Failed opening 'config.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/frenchpserv/www/ban.php on line 2

Warning: mysql_connect() [function.mysql-connect]: Lost connection to MySQL server at 'reading initial communication packet', system error: 101 in /home/frenchpserv/www/ban.php on line 4

Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/frenchpserv/www/ban.php on line 5

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/frenchpserv/www/ban.php on line 5
Le compte Shuyin55400 à bien été banni !)

Cordialement, Alucard.

27 réponses

avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
18 févr. 2010 à 18:54
Le chemin pour inclure le fichier "config.php" n'est pas bon.
Sinon ton formulaire n'est pas très valide W3C et la sécurité n'est pas très présente dans le PHP.
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

18 févr. 2010 à 18:57
Merci, mais je suis très débutant en la matière et... le chemin de config.php c'est quoi? Si c'est pas trop te demandé est ce que tu peut détailler? x)
Sinon pour la sécuriter y'a pas de soucis puisque la c'est juste pour tester en locale, après je mettrais peut être du htaccess si je le mets en ligne.

Alucard.
0
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
18 févr. 2010 à 18:59
Le chemin que tu précises dans la fonction include() est mauvais.
Pour la sécurité, une .htaccess n'empêchera pas une injection SQL.
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

20 févr. 2010 à 14:44
Laissons le .htacess de côté.
Pour l'instant je voudrais savoir, dans le config.php qu'est ce que je dois mettre? Les pass, id et hebergeur de la base de donnée? Et après mettre le include config.php?
Ou est ce que je peut directement enlever le include config.php et mettre mysql_connect("*********", "****", "******");

Et après je mets mon code php?
J'suis vraiment très low :S.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
20 févr. 2010 à 15:12
Tu fais comme tu veux.
Le mieux est de mettre tes identifiants dans un fichier de configuration, comme ça si tu changes d'hébergeur tu n'as que ce fichier à modifier.
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

20 févr. 2010 à 15:25
J'te remercie déjà beaucoup de ton aide, mais je vais encore t'embêter un peu.
Maintenant que j'ai créer le fichier config.php et mis tout ce qu'il fallait dedans, quand j'essaye de bannir le compte, voila l'erreur qu'il me mets :S.


Warning: mysql_connect() [function.mysql-connect]: Lost connection to MySQL server at 'reading initial communication packet', system error: 101 in /home/frenchpserv/www/ban.php on line 4

Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/frenchpserv/www/ban.php on line 5

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/frenchpserv/www/ban.php on line 5
Le compte Shuyin55400 à bien été banni !
0
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
20 févr. 2010 à 15:33
Ton fichier config.php ressemble-t-il bien à cela ?
<?php
$dbhost = 'sql.tonhebergeur.com';
$dbuser = 'tonidentifiant';
$dbpass = 'tonpassword';
$dbname = 'nom_de_la_bdd';
?>
Ensuite, tu dois inclure ce fichier dans ta page PHP et utiliser les variables comme suit :
<?php
require 'config.php';

mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

// ...
?>
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

20 févr. 2010 à 15:44
Oula, non il ne ressemblait pas du tout a cela xD, alors j'ai mis tout ce que tu m'a dit et remplis (normalement correctement) tout ce qu'il y avait a remplir.
Mais... encore une petite erreur!

La voila:

Parse error: syntax error, unexpected '<' in /home/frenchpserv/www/ban.php on line 2

En espèrant que tu pourra encore m'aider (je te remercie déjà beaucoup d'avoir eu la patience jusqu'à là de m'avoir aider ^^).

Cordialement,
Alucard.
0
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
20 févr. 2010 à 15:47
Quelle sont les 3 premières lignes de ton fichier ban.php ?
Regardes-y avant, tu vas sans doute trouver l'erreur.
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

20 févr. 2010 à 16:04
J'ai trouver deux erreurs, je les ai corrigés, pourtant maintenant il y a une erreur (oui encore >_<)

Je te repasse le ban.php:

<?php
require 'config.php';

mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

// ...

//On se connecte à la base de données
$db_connect;
mysql_select_db("account");

//on fait ça
$account=$_POST['account'];
$sql="UPDATE account SET status='BAN' WHERE login='$account'";
?>

Le compte <?php echo $_POST['account']; ?> à bien
été banni !



Voila ensuite le config.php:

<?php
$dbhost = '*********';
$dbuser = '****';
$dbpass = '******';
$dbname = '******';
?>

L'erreur, la voici:

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/frenchpserv/www/ban.php on line 4

Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/frenchpserv/www/ban.php on line 5

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/frenchpserv/www/ban.php on line 5

Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/frenchpserv/www/ban.php on line 11

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/frenchpserv/www/ban.php on line 11
Le compte Shuyin55400 à bien été banni !
0
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
20 févr. 2010 à 16:37
Pourquoi refais-tu un mysql_select_db alors que ça se fait déjà juste après le mysql_connect, avec la variable $dbname du fichier config.php ?
Et le compte ne risque pas d'être banni puisque tu définis la requête mais tu ne l'exécute pas (mysql_query).
Pour les erreurs, ton hôte SQL est mauvaise.
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

21 févr. 2010 à 14:06
Re salut,
Bon alors j'ai changer de technique. Cette fois j'ai décider de ne plus utiliser le config.php.
Voila mon ban.php modifié:

<?php
mysql_connect("*.**.***.***", "****", "******");

mysql_select_db("account");

//on fait ça
$account=$_POST['account'];
$sql="UPDATE account SET status='BAN' WHERE login='$account'";
mysql_query($sql) or die (mysql_error());
?>

Le compte <?php echo $_POST['account']; ?> à bien
été banni !

Mais ca ne marche toujours pas... J'suis un peu dégouté lol:

Warning: mysql_connect() [function.mysql-connect]: Lost connection to MySQL server at 'reading initial communication packet', system error: 101 in /home/frenchpserv/www/ban.php on line 2

Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/frenchpserv/www/ban.php on line 4

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/frenchpserv/www/ban.php on line 4

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /home/frenchpserv/www/ban.php on line 9

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/frenchpserv/www/ban.php on line 9
Le compte maximedragon à bien été banni !
0
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
21 févr. 2010 à 14:09
Tu indiques une mauvaise hôte SQL.
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

22 févr. 2010 à 22:03
Re bonjour,

Effectivement c'était mon hôte MySql qui n'était pas bon, je viens de tester en local et ca marche a la perfection :).

Alors maintenant, je me suis attaquer à essayer de trouver des informations, mais il y a une erreur, la voici;
Parse error: parse error in C:\wamp\www\searchaccount.php on line 21

Je t'explique mon problème:

Je crois que le code est bon, le seul truc, c'est que je ne sais pas comment relier mon searchaccount.php a mon index.html, je ne sais pas quoi mettre :S. Par exemple, si je reprend l'exemple de mon ban.php j'avais mis ça pour relier mon ban.php au index.html:

Dans mon ban.php: $account=$_POST['account'];

Dans mon index.html: <form method="post" action="ban.php">Nom
du compte : <input name="account" maxlength="100" type="text" /><br />
<input value="Valider" type="submit" /></b>
</form>

Seulement la, c'est pas $_POST qu'il faut mettre ca doit être autre chose mais je ne sais pas quoi :S
Si tu pouvais m'éclairer un peu plus sur ceci... merci d'avance!

P.S: Voila mon searchaccount.php:

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("metin2"); // Sélection de la base coursphp

$account=$_POST['account'];
$reponse = mysql_query("SELECT * FROM account"); // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :

while ($donnees = mysql_fetch_array($reponse) )
{
?>

Nom du compte : <?php echo $_POST['account']; ?> <br>
<p>
Nom de compte : <?php echo $donnees['login']; ?><br />
Code d'effacement de perso : <?php echo $donnees['social_id']; ?>
Etat du compte : <?php echo $donnees['status']; ?><br />
</p>

Alucard.
0
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
22 févr. 2010 à 22:36
Parse error: parse error in C:\wamp\www\searchaccount.php on line 21
Regarde si tu n'aurais pas oublié un ";" ou une erreur avec les apostrophes à la ligne 21 ou celle du dessus.
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

22 févr. 2010 à 22:44
Tu peux vérifier et compter les lignes, tu verra qu'il n'y a pas d'erreur!

Je te remets encore mon searchaccount.php:

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("metin2"); // Sélection de la base coursphp

$account=$_POST['account'];
$reponse = mysql_query("SELECT * FROM account"); // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :

while ($donnees = mysql_fetch_array($reponse) )
{
?>

Nom du compte : <?php echo $_POST['account']; ?>
Nom de compte : <?php echo $donnees['login']; ?>
Code d'effacement de perso : <?php echo $donnees['social_id']; ?>
Etat du compte : <?php echo $donnees['status']; ?>



Et maintenant, j'ai cette erreur la: Parse error: parse error in C:\wamp\www\searchaccount.php on line 18
0
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
23 févr. 2010 à 16:56
Tu ne fermes pas la boucle while
0
Alucard380
Messages postés
19
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
21 mars 2010

23 févr. 2010 à 21:54
Effectivement, encore une fois, je te remercie ^^. (Qu'est ce que c'est chiant le php t'oublie un petit truc et paf ton script est mauvais >_<)

Alors voila, maintenant, ca marche. Enfin, presque.

Voila mon problème:

Le script marche presque à merveille; il y a deux problèmes (mais qui peut être sûrement résolu en une solution). Le premier, c'est celui que je n'arrive pas a "relier" ma page html (pour rechercher un compte en particulier quoi) et ma page php. Je ne trouve pas le bon code. Le deuxième, c'est que quand je recherche un compte (qui en faites peu importe ce que j'écris ca affichera toujours le même résultat) il m'affiche beaucoup, beaucoup trop de comptes, et les informations sont fausses car quand je vois le résultat et que je vérifie dans la base de donnée ce n'est pas pareil du tout.
Je vous donne le résultat de mon search.php:

Nom de compte : linux57525
Nom du personnage : Rain
Etat du compte : OK
Code d'effacement de perso : 1234567
Temps de jeu : 78 minutes
Niveau : 80
Exp : 277
Yang : 998673669
IP du compte : 192.168.2.1
Derniere connexion : 2009-09-19 00:09:53
Cheval level : 0


Nom de compte : Shuyin55400
Nom du personnage : Rain
Etat du compte : OK
Code d'effacement de perso : 1234567
Temps de jeu : 78 minutes
Niveau : 80
Exp : 277
Yang : 998673669
IP du compte : 192.168.2.1
Derniere connexion : 2009-09-19 00:09:53
Cheval level : 0


Nom de compte : Giren57760
Nom du personnage : Rain
Etat du compte : OK
Code d'effacement de perso : 1234567
Temps de jeu : 78 minutes
Niveau : 80
Exp : 277
Yang : 998673669
IP du compte : 192.168.2.1
Derniere connexion : 2009-09-19 00:09:53
Cheval level : 0


Nom de compte : Alucard380zgm
Nom du personnage : Rain
Etat du compte : OK
Code d'effacement de perso : 1234567
Temps de jeu : 78 minutes
Niveau : 80
Exp : 277
Yang : 998673669
IP du compte : 192.168.2.1
Derniere connexion : 2009-09-19 00:09:53
Cheval level : 0

(et encore beaucoup d'autres comptes... comme vous pouvez le voir, il repète toujours les mêmes informations sauf le nom de compte, je sais pas pourquoi d'ailleurs).

Je te re donne le code de mon search.php :

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("metin2"); // Sélection de la base metin2

$reponse = mysql_query("SELECT * FROM account, player"); // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :

while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p>
<br>Nom de compte : <?php echo $donnees['login']; ?>
<br>Nom du personnage : <?php echo $donnees['name']; ?>
<br>Etat du compte : <?php echo $donnees['status']; ?>
<br>Code d'effacement de perso : <?php echo $donnees['social_id']; ?>
<br>Temps de jeu : <?php echo $donnees['playtime']; ?> minutes
<br>Niveau : <?php echo $donnees['level']; ?>
<br>Exp : <?php echo $donnees['exp']; ?>
<br>Yang : <?php echo $donnees['gold']; ?>
<br>IP du compte : <?php echo $donnees['ip']; ?>
<br>Derniere connexion : <?php echo $donnees['last_play']; ?>
<br>Cheval level : <?php echo $donnees['horse_level']; ?>
</p>
<?php
}
?>


En espèrant que tu puisse m'aider encore une fois,

Alucard.
0
avion-f16
Messages postés
18733
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 mai 2022
4 387
23 févr. 2010 à 21:57
Tu veux faire comme un moteur de recherches ?
https://openclassrooms.com/fr/courses
0
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
472
23 févr. 2010 à 22:23
Je pense que le problème viens de là:
$reponse = mysql_query("SELECT * FROM account, player"); // Requête SQL

Tu lie deux tables mais sans vraiment faire de lien entre les deux.
En gros, il retrouve pas ses petits.
Je ne procède personnellement jamais ainsi, mais j'inserre une requète dans une autre.
Par exemple (en repartant de ton exemple):
$sql='SELECT * FROM player ORDER BY login ASC';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data = mysql_fetch_array($req))
     {
     $sql='SELECT * FROM account WHERE login="'.$data['login'].'"';
     $req_mbr = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     $data_mbr = mysql_fetch_array($req_mbr);
     
     echo'...';
     }


Un exemple simple.
La seconde requête sera réactualisé pour chaque membre et t'affichera les données de chaque membre au fur et à mesure que la première requête te fera ta liste de membre.
J'espère que ça pourra t'aider.
0