Projet de fin d'année. (Java,Html,MySQL,PHP)

Projet de fin d'année. (Java,Html,MySQL,PHP) - Divers - Programmation

Marsh Posté le 23-11-2013 à 17:41:16    

Bonjour,

 

Je suis un nouveau membre du forum et j'ai trouvé votre site car un ami me l'a conseillé. Je suis en Terminale actuellement et je compte rentrer dans une école de Game Designer/Web Designer l'année prochaine, l'entrée dans cette école nécessite un exposé d'un de nos projets personnels afin de prouver notre implications et notre envie d'intégrer l'école. J'ai donc décidé de créer un launcher pour un jeu (minecraft en l’occurrence du fait que ses codes sources sont publiques.) avec une petite difficulté c'est que j'ai pour projet de remplacer le système d'authentification officiel pour y intégrer mon propre système (les membres s'inscriront sur un site et se logeront avec les identifiants du site.) /!\ IMPORTANT /!\
J'ai souscris à un compte prenium afin d'avoir ACCES a mes données SQL et ne pas être obligé de passer par leur bouton PhPmyadmin

 

Mon launcher contiendra donc :
du Java (Création du launcher), EN COURS
du PHP et MySQL (pour créer la base d'authentification perso), BLOQUE
du HTML (création de page d’accueil intégrable au launcher). EN ATTENTE

 


Je vais donc directement vous exposer mes problèmes, au fur et à mesure, avec tout les détails de mon avancés et j'éditerai ce sujet pour pas faire de double poste :

 

J'ai donc commencé avec un code source en travaillant sur Eclipse et avec un hébergeur web possédant un FTP (Hostinger France en l’occurrence) donc là j'ai suivi des guides et j'ai reussi à imposer à mon launcher une version du jeu spécifique (antérieur à la version officiel).
Je posséde donc un launcher qui télécharge la version du jeu directement à part de mon hébergeur web (que j'édite avec FileZila).

 

Je me suis donc intéressé à la deuxième étapes qui est de remplacer le système d'authentification officiel avec mon serveur d'authentification perso, j'ai téléchargé WAMP (http://www.wampserver.com/) afin d'utiliser PhPmyadmin. Ma question pour le moment est donc : Puis-je remplacer le système d'authentification et le remplacer par le miens ? Voici ou on abouti mes recherches : http://wiki.vg/Protocol_Encryption#Authentication
il semble que le script soit celui-ci

 

PS : Je tiens à préciser que je suis novice et qu'il me faut absolument me lancer dans mon projet pour rentrer dans le bain ! Je tiens vraiment à l'avoir fini avant la fin de l'année et je pourrai y mettre beaucoup de temps libre, en aucun cas je vous demande de le faire à ma place mais juste de m'éclairer sur la démarche à suivre.

 

Merci d'avance à vous tous,

 

Aerowiel.


Message édité par Aerowiel le 24-11-2013 à 11:08:04
Reply

Marsh Posté le 23-11-2013 à 17:41:16   

Reply

Marsh Posté le 24-11-2013 à 10:57:37    

J'suis entrin de bosser sur la conception du script de la page de login mais j'ai beaucoup de mal à configurer des chemins d'accés à mon SQL :(.

 

Voilà la gueule du prog

 

<?php
echo"<h1>S'inscrire</h1>";

 

if(isset($_POST['submit']))
{
 if(mysql_num_rows(mysql_query("SELECT * from users WHERE username='" . $_POST['username'] . "'" )) == 1){
  echo "Oops! Username is already in use!";
}
else if($_POST['password'] != $_POST['retype-password']){
  echo "Oops! The two entered passwords don`t match!";
}
else if(strlen($_POST['username']) > 15)
{
  echo "Oops! Username is too long!";
}
else if(strlen($_POST['username']) < 6){
  echo "Oops! Username is too short!";
}
else if(strlen($_POST['password']) > 15){
  echo "Oops! Password is too long!";
}
else if(strlen($_POST['password']) < 6){
  echo "Oops! Password is too short!";
}
else if(preg_match('/[^0-9A-Za-z]/',$_POST['username'])){
  echo "Oops! Unknown letters at username!";
}
else if(preg_match('/[^0-9A-Za-z]/',$_POST['password'])){
  echo "Oops! Unknown letters at password!";
}
else{
$query = mysql_query("INSERT into users VALUES ('".$_POST['username']."', '".sha1($_POST['password'])."')" ) or die(mysql_error());
}
{

 

$db_host = "mysql.hostinger.fr";
$db_user = "********_aero";
$db_pwd = "*****";
$db_select = "u*********_wttj";
mysql_connect($db_host, $db_user, $db_pwd, $db_select);
}
}

 

?>

 


<form method="POST" action="register.php">
<p>Nom d'utilisateur :</p>
<input type="text" name="username"/>
<p>Mot de passe :</p>
<input type="password" name="password"/>
<p>Repetez mot de passe :</p>
<input type="password" name="repeatpassword"/><br/>
<input type="submit" name="submit" value="valider"/>

 


</form>

 

Et quand je le test ça donne ça :

 

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 6

 

Notice: Undefined index: retype-password in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 9
Oops! The two entered passwords don`t match!
Warning: mysql_connect(): in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 40

 

Warning: mysql_connect(): in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 40

 

Et le module d'inscription que l'on voit à la fin du script est censé die or là il se place juste aprés les 4 lignes d'erreur !


Message édité par Aerowiel le 24-11-2013 à 11:04:56
Reply

Marsh Posté le 24-11-2013 à 11:09:16    

1/ il faut te connecter avant de faire la moindre requete
2/ il FAUT utiliser des requetes préparées. Ce n'est pas plus compliqué et ça te protégeras gratuitement contre les injections SQL  


---------------

Reply

Marsh Posté le 24-11-2013 à 11:58:22    

Alors suite à la lecture de ta réponse flo850 et à la vue de ce message dans mon pannel de connection à distance :

 

If you wish to connect to our MySQL server form your computer or from some other server use this section to add remote IP addresses that will connect to our MySQL server.

 

Our MySQL server public IP address is: 185.28.20.2. Use this IP address for your PHP scripts.

 

J'ai modifié mon script de cette façon :

 

<?php
echo"<h1>S'inscrire</h1>";

 

if(isset($_POST['submit']))
{
{
$db_host = "185.28.20.2.";
$db_user = "u********_aero";
$db_pwd = "*******";
$db_select = "u********_wttj";
mysql_connect($db_host, $db_user, $db_pwd, $db_select);
}

 

if(mysql_num_rows(mysql_query("SELECT * from users WHERE username='" . $_POST['username'] . "'" )) == 1){
  echo "Oops! Username is already in use!";
}
else if($_POST['password'] != $_POST['retypepassword']){
  echo "Oops! The two entered passwords don`t match!";
}
else if(strlen($_POST['username']) > 15)
{
  echo "Oops! Username is too long!";
}
else if(strlen($_POST['username']) < 6){
  echo "Oops! Username is too short!";
}
else if(strlen($_POST['password']) > 15){
  echo "Oops! Password is too long!";
}
else if(strlen($_POST['password']) < 6){
  echo "Oops! Password is too short!";
}
else if(preg_match('/[^0-9A-Za-z]/',$_POST['username'])){
  echo "Oops! Unknown letters at username!";
}
else if(preg_match('/[^0-9A-Za-z]/',$_POST['password'])){
  echo "Oops! Unknown letters at password!";
}
else{
$query = mysql_query("INSERT into users VALUES ('".$_POST['username']."', '".sha1($_POST['password'])."')" ) or die(mysql_error());
}

 


}

 

?>

 


<form method="POST" action="register.php">
<p>Nom d'utilisateur :</p>
<input type="text" name="username"/>
<p>Mot de passe :</p>
<input type="password" name="password"/>
<p>Repetez mot de passe :</p>
<input type="password" name="retypepassword"/><br/>
<input type="submit" name="submit" value="valider"/>

 


</form>

 

J'ai placé le module de connexion au serveur MySQL avant le stockage mais ça parait encore faux... Pour preuve je reçois encore ça sur ma page PHP :
Warning: mysql_connect(): Host '92.149.60.127' is not allowed to connect to this MySQL server in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 11

 

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 14
No database selected

 

Il me dit ''No database selected'' alors qu'on voit clairement sur mon script que j'ai défini ou la chercher...

 

Je me suis dis aussi en voyant que cet ''host'' n'a pas le droit d'accéder à MySQL que je pourrai tester avec l'adresse d'host que m'a donné Hostinger j'ai donc remplacer l'ip par => mysql.hostinger.fr

 

Et ça me donne cette erreur cette fois :
Warning: mysql_connect(): in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 11

 

Warning: mysql_connect(): in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 11

 

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-12.1\www\my portable files\register.php on line 14
No database selected

 

Je ne comprend pas cette erreur : ''Warning; mysql_connect"

 

Aussi j'ai entendu parlé d'un nouveau mysql_connect () qui se remplace par mysqli_connect () , or quand je le remplace dans mon script NotePad++ il ne reconnait pas l'argument... (affiché en gris)

 


Message édité par Aerowiel le 24-11-2013 à 12:06:27
Reply

Marsh Posté le 24-11-2013 à 15:55:35    

Tu executes ton code depuis ton pc perso , alors que le serveur mysql n'est vraisemblablement accessible que depuis un site hébergé chez eux  
 
la coloration syntaxique de notepad n'a pas grand chose à voir avec ce qui est supporté et ne l'est pas. Ce n'est qu'une indication


---------------

Reply

Marsh Posté le 24-11-2013 à 17:24:35    

Je suis donc censé mettre mon login sur une page hebergé chez eux ?

Reply

Marsh Posté le 24-11-2013 à 17:33:50    

Tout ton code PHP  doit être chez eux


---------------

Reply

Marsh Posté le 24-11-2013 à 17:52:16    

flo850 a écrit :

1/ il faut te connecter avant de faire la moindre requete
2/ il FAUT utiliser des requetes préparées. Ce n'est pas plus compliqué et ça te protégeras gratuitement contre les injections SQL  


J'ajouterais: utiliser bcrypt pour hasher les mots de passe et non sha1 (et ne mettre aucune limite au mot de passe utilisable).


---------------
Main/Alt1/Alt2/Alt3
Reply

Marsh Posté le 24-11-2013 à 22:46:23    

D’abord merci de votre aide, voici là ou j'en suis :
 
 
Bonsoir,
 
Veuillez utiliser les bons identifiants MySQL:
Adresse ip MySQL distant: ***.**.**.*
Utilisateur: u********3_aero
Nom de la base de données: u********_wttj
 
Veuillez utiliser les bons identifiants MySQL pour que vous puissiez vous connecter à votre base de données à distance.
 
Veuillez ajouter l'adresse ip de votre ordinateur dans la section "MySQL distant", vous ne l'avez pas fait pour le moment.
 
Si vous avez d'autres questions, n'hésitez pas à nous contacter à nouveau.
Merci d'avoir choisi d'utiliser nos services.
 
Cordialement
Nacim C.
 
Département d'assistance client
http://www.hostinger.fr
 
Voici la réponse du support, apparement mon script n'arrive pas à entrer dans leur base mySQL parce que j'ai pas mis mon IP mais je ne vois pas ou la mettre dans mon panel je suis allé dans la section mais il me propose juste d'ajouter un ''Host'' + ''Nom de DB'' or j'ai esseyé de mettre mon ip en host mais ça change rien.
Dois-je indiquer au script quelle ip utiliser ? Si oui comment ?

Reply

Marsh Posté le 25-11-2013 à 12:23:30    

Bonjours,
D’après la consultation de votre gueule de programme  je confirme la réponse de flo850 car il faut tjr connecter avant de faire la moindre requête et de prépare les requêtes d'avance afin d’éviter toute injection sql.
 cordialement.
www.basicsolutions.ma


Message édité par basicsolutions le 25-11-2013 à 12:24:43
Reply

Marsh Posté le 25-11-2013 à 12:23:30   

Reply

Marsh Posté le 25-11-2013 à 12:46:55    

Et sinon, tu dois mettre tes cours de php à la poubelle.
Cela fait plusieurs années que mysql_connect n'est plus employée.
 
Quitte à apprendre, je te conseille de partir sur de bonne bases
http://www.amportfolio.com/knowled [...] entals-pdo

Reply

Marsh Posté le 26-11-2013 à 18:43:58    

J'ai suivi vos conseils, mon script marche (bon ya pas de mise en page mais c'est pas la priorité) j'ai donc reussi à me connecter au MySQL de Hostinger et d'y envoyer des identifiants et mon serveur les reçois :)
 
<form method="post">
<label>Pseudo: <input type="text" name="pseudo"/></label><br/>
<label>Mot de passe: <input type="password" name="passe"/></label><br/>
<label>Confirmation du mot de passe: <input type="password" name="passe2"/></label><br/>
<label>Adresse e-mail: <input type="text" name="email"/></label><br/>
<input type="submit" value="M'inscrire"/>
</form>
 
<?php
if(!empty($_POST['pseudo']))
{
 
$con=mysqli_connect("***.**.**.*","u********_aero","******","u********_wttj" );
 
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
$passe2 = mysql_real_escape_string(htmlspecialchars($_POST['passe2']));
if($passe == $passe2)
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
 
$passe = sha1($passe);
 
mysqli_query($con,"INSERT INTO validation (pseudo, passe, email)
VALUES ('$pseudo', '$passe','$email')" );
}
 
else
{
echo 'Les deux mots de passe que vous avez rentrés ne correspondent pas…';
}
}
?>
 
Je voudrai que mon script génére le même genre de logs que ceux utilisé par Mojang (vous savez les créateurs de minecraft :P) en analysant un peu la documentation j'en ai retiré les éléments que mon script doit générer et stocker surement ?
La base de données est plus importante sur le serveur d'authentification Mojang, il faudrait donc avoir ce genre de truc dans le MySQL
-Colonne id
-Colonne Pseudo
-Colonne Email
-Colonne Nom
-Colonne ClientToken
-Colonne AccessToken
-Colonne Password (crypté biensûr)
-Colonne SelectedProfile_id
-Colonne SelectedProfile_name
-Colonne AvailableProfile_id
-Colonne AvailableProfile_name


Message édité par Aerowiel le 26-11-2013 à 20:34:06
Reply

Marsh Posté le 26-11-2013 à 21:27:43    

non,  
non
non
non
non
 
Toutes tes requetes doivent être des requêtes préparées : http://fr.php.net/manual/fr/mysqli [...] ements.php
 
(en plus ça t'éviteras de devoir penser a mysql_escape_string)
(et que vient foutre htmlspecialchars ? )


---------------

Reply

Marsh Posté le 27-11-2013 à 06:56:47    

Merci beaucoup de prendre du temps pour me faire progresser, je reviens quand j'aurai amélioré ça^^

Reply

Marsh Posté le 27-11-2013 à 18:14:00    

J'ai lu mais j'ai beaucoup de mal à changer mon script... Pourriez-vous m'aider ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed