Bon allez on efface tout, voici un tuto complet avec code fonctionnel. J'ai verrouillé le tuto, tu me diras ce que tu en pense ici
<!DOCTYPE html>
<html>
<body>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Identification avec mot de passe hashé et grain de sel aléatoire</title>
<script language="javascript">
function doChallengeResponse(form) {
form.mot_de_passe.value = "";
document.getElementById("myForm").submit();
}
</script>
<form id="myForm" name="identification" method="post" action="page_2.php">
<p>
Utilisateur:
<input type="text" name="utilisateur" size="32" maxlength="32"><br>
Mot de passe:
<input type="password" name="mot_de_passe" size="32" maxlength="32"><br>
<input onclick="doChallengeResponse(this.form)" id="myForm" type="button" value="identification">
<!-- pas pour l'instant <input type="hidden" name="reponse" value=""> -->
</p>
</form>
</body>
Page de traitement de formulaire (page_2.php):<?php
header('Content-Type: text/html; charset=UTF-8');
echo "j'ai réussi à atteindre la feuille de traitement de formulaire";
$utilisateur=$_POST['utilisateur'];
var_dump($utilisateur);
$mot_de_passe=$_POST['mot_de_passe'];
var_dump($mot_de_passe);
?>
Je rentre un nom d'utilisateur et un mot de passe.<input type="password" name="mot_de_passe" size="32" maxlength="32"><br>
ça va car le html est un langage côté client.
<form action="#" method="post" id="authentification">
Ici, je ne laisse pas le dièse mais le remplace par le nom de ma page php.// Activer openssl si possible (sur le serveur) pour pouvoir se servir de la fonction 'openssl_random_pseudo_bytes'
function Unique_Sel()
{
return function_exists('openssl_random_pseudo_bytes')? hash("sha512",openssl_random_pseudo_bytes("128", $cstrong)) : hash("sha512",uniqid(rand(), true));
}
A part pour ces quelques points, je devrais peut-être bien arriver à me débrouiller
<?php
//paramétrage du jeu de caractères UTF-8
header('Content-Type: text/html; charset=UTF-8');
//création du sel aléatoire
$_SESSION['sel_aleatoire']=hash("sha256",(uniqid(rand(), true)));
//identifiants bdd
include("mes_identifiants.php");
?>
<!-- partie javascript ci-dessous à refaire -->
<script src="gds.js"></script> <!-- programme Ajax -->
<div id="output"></div><!-- champs caché à l'emplacement du div via Ajax. J'y récupère mon grain de sable. -->
<!-- => <input type="text" name="salt" id="salt" value="'. $salt .'" size="9" maxlength="7"/> -->
<script type="text/javascript">
<script language="javascript"> //à refaire
var reponse = "<?php echo $_SESSION['sel_aleatoire']; ?>"; //à revoir
</script>
<input type="hidden" name="reponse" id="reponse" value="" size="32" maxlength="32"><br>
<script type="text/javascript">
var ensemble = document.getElementById("reponse");
ensemble.value = reponse;
</script>
<form id="formIdentification" name="valider" method="POST" action="test_traitement.php" accept-charset="UTF-8">
<ul style="list-style-type: none; width: 63%; font-size: 20px;">
<fieldset>
<legend align="center">Veuillez entrer vos identifiants.</legend>
<br/>
<li>Nom d'utilisateur: <input type="text" name="nom_utilisateur" id="nom_utilisateur" size="17" maxlength="15"/><li/>
<br/>
<li>Mot de passe: <input type="password" name="mot_de_passe" size="14" maxlength="12"/><li/>
</fieldset>
<br/>
<br/>
<input onclick="doChallengeResponse(this.form);" id="formIdentification" type="button" value="valider"/>
<br/>
<br/>
<input type="reset" name="reset" value="recommencer"/>
<input type="submit" name="submit" value="valider" id="valider"/>
<input type="hidden" name="reponse" id="reponse" value="" />
</li>
</ul>
</form>
Mon script de connexion se trouve dans un fichier mes_identifiants.php (atteind par un include situé en haut du script ci-dessus).
Nan dans un premier temps faut pas bricoler. Il s'agit simplement de faire fonctionner les scripts tel qu'ils sont écrit sans rien modifier excepté évidemment de renseigner tes identifiants de connexion à la bdd.Bonjour,
Oui, je fais que 1/ et je travaille à 100% à partir du tuto.
J'ai rentré la table test via phpmyadmin.
J'ai repris le formulaire suivant dans une page test_formulaire.php en gardant
la structure la plus élémentaire qui soit...
$hostname = "localhost";
$database = "ma_base";
$username = "root";
$password = "";
$hostname = "localhost";
$database = "ma_base";
$username = "root";
$password = "";
Remarque qu'il y a les mêmes paramètres à renseigner dans le premier fichier de connexion.
// DESTINATION DE LA REQUETE AJAX
var destination_ajax = 'recuperation_sel.php';
et: // On envoie la requête ajax
$.ajax({
// type du retour attendu
dataType: "json",
// type de l'envoi
type: "POST",
// destination du fichier php
url: destination_ajax,
// données à envoyer
data: data_post
})
semblent permettre de lire un fichier (ici recuperation_sel.php) à partir de echo json_encode(array('sel'=>$sel_retour,'erreur'=>$erreur));
est de permettre une autre sérialisation ou une encapsulation pour le retour avec le programme Ajax?
Oui donc c'est à peu près cela.
Dans la fonction js:
et:// DESTINATION DE LA REQUETE AJAX var destination_ajax = 'recuperation_sel.php';
semblent permettre de lire un fichier (ici recuperation_sel.php) à partir de// On envoie la requête ajax $.ajax({ // type du retour attendu dataType: "json", // type de l'envoi type: "POST", // destination du fichier php url: destination_ajax, // données à envoyer data: data_post })
l'intérieur d'une fonction javascript.
C'est ça le but du code? Je peux avoir quelques explications sur le sens précis de ce code?
Pourquoi avoir sérialisé le login dans data_post avant de l'envoyer avec le programme Ajax?
Est-ce que le but de:est de permettre une autre sérialisation ou une encapsulation pour le retour avec le programme Ajax?echo json_encode(array('sel'=>$sel_retour,'erreur'=>$erreur));
3) Le MD5 est devenu dépassé à notre ère (à cause des rainbow table), il est préférable d'utiliser SHA-256.
Pour l'utiliser : crypt