PHP - Javascript/JQuery

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP - Javascript/JQuery

Re: PHP - Javascript/JQuery

par ciramor » 09 sept. 2014, 15:22

Oh bah si tu viens de Java dans 2 jours t'as résolu le PHP :D

Oui voilà, t'as tout compris. T'auras un fichier qu'on appelle un webservice, qui va faire le travail (avec ta classe créée par exemple) et qui renverra quelque chose, et tu pourras récupérer ce quelque chose en AJAX !
Tu es très optimiste quand à ma capacité d'assimiler PHP/Ajax en 2jours !
Okay, je crois que je vais m'en sortir grâce à ces informations!

Laissons ce topic ouvert encore 1-2 jours, je reviendrai poster ici ma réussite ou mes futurs problèmes.

Cdlt,

Ciramor

Re: PHP - Javascript/JQuery

par Nestecha » 09 sept. 2014, 14:53

Oh bah si tu viens de Java dans 2 jours t'as résolu le PHP :D

Oui voilà, t'as tout compris. T'auras un fichier qu'on appelle un webservice, qui va faire le travail (avec ta classe créée par exemple) et qui renverra quelque chose, et tu pourras récupérer ce quelque chose en AJAX !

Re: PHP - Javascript/JQuery

par ciramor » 09 sept. 2014, 14:41

Oulala attention toi t'as voulu utiliser des objets ^^
Je viens du monde de Java :D
"Est ce qu'il y a un utilisateur avec X mail et X password ?" - "Oui ?" - "Alors est-ce que X mail est égal à X mail et X password égal à X password ?" !
C'est désormais plus clair dans mes pensées! Merci, il est vrai que s'il répond "Oui" à l'existence du mail & password, le reste ne sert à rien.
Ensuite, ta requête AJAX est bonne. C'est juste que ton MySQL.php est maintenant une classe qui est faite pour créer des objets. Ce n'est pas un fichier PHP qui renvoit un résultat. D'ailleurs tu le vois toi même, tu n'as pas fait de json_encode(1), il y a des fonctions utilisables (ou pas, j'ai pas vérifié honnêtement) dans un autre fichier PHP.
MySQL.php, en l'occurence, me sert, entre autres, de connexion à la base de données + requêtes CRUD. Si j'ai bien compris, c'est classe n'est plus à toucher, mais il me faut créer un autre fichier PHP qui me renverra le résultat souhaité?
En fait si tu veux utiliser cette méthode, aucun soucis hein, mais tu dois créer un autre fichier qui incluras la classe PHP MySQL.PHP, créer un nouvel objet dans cette nouvelle page (ou sinon passe tes fonctions en static pour pouvoir utiliser les fonctions en écrivant MySQL::fonction() et surtout sans avoir à créer d'objet), puis utiliser les fonctions pour obtenir tes résultats que tu enverras en json_encode(), et c'est CETTE page que tu vas lier en AJAX.

Là, tu as lié une page qui donne des outils pour faire, lie plutôt la page qui fait (même si elle utilise ces outils) ;)
Donc cette ligne :

[javascript]url: "MySQL.php", // url du fichier php[/javascript]

deviendrait

[javascript]
url: "newFileFunctions.php", // url du fichier php [/javascript]

?


Je te remercie fortement pour le temps que tu investis avec moi et mon projet.
Cdlt,

Ciramor

Re: PHP - Javascript/JQuery

par Nestecha » 09 sept. 2014, 14:24

Oulala attention toi t'as voulu utiliser des objets ^^

Bon c'est très bien d'utiliser les objets, mais faut savoir comment faire ! C'est pas méchant t'en fais pas, essaie juste de rester dans du code simple, et ensuite faire de l'objet !

Alors pour te répondre tout d'abord, non je n'ai pas dit que la vérification mail/password était inutile !

J'ai dit qu'il n'y avait pas de raison de dire à ta base SQL :

"Est ce qu'il y a un utilisateur avec X mail et X password ?" - "Oui ?" - "Alors est-ce que X mail est égal à X mail et X password égal à X password ?" !

Si la réponse à la première question est déjà oui, c'est que forcément ce sont les même mails et password, mais il FAUT faire la vérification quand même, parce que si le password est mauvais, il faut que la connexion ne fonctionne pas quand même !

Ensuite, ta requête AJAX est bonne. C'est juste que ton MySQL.php est maintenant une classe qui est faite pour créer des objets. Ce n'est pas un fichier PHP qui renvoit un résultat. D'ailleurs tu le vois toi même, tu n'as pas fait de json_encode(1), il y a des fonctions utilisables (ou pas, j'ai pas vérifié honnêtement) dans un autre fichier PHP.

En fait si tu veux utiliser cette méthode, aucun soucis hein, mais tu dois créer un autre fichier qui incluras la classe PHP MySQL.PHP, créer un nouvel objet dans cette nouvelle page (ou sinon passe tes fonctions en static pour pouvoir utiliser les fonctions en écrivant MySQL::fonction() et surtout sans avoir à créer d'objet), puis utiliser les fonctions pour obtenir tes résultats que tu enverras en json_encode(), et c'est CETTE page que tu vas lier en AJAX.

Là, tu as lié une page qui donne des outils pour faire, lie plutôt la page qui fait (même si elle utilise ces outils) ;)

Re: PHP - Javascript/JQuery

par ciramor » 09 sept. 2014, 10:14

MAJ de mon code :

index.php:

<?php
include_once "include/db_connect.php";
include_once "include/functions.php";
include_once "class/MySQL.php";

if($_POST != array()){
	$madatabase = new MySQL();
	$madatabase->connect();
	$madatabase->select();
	exit;
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta content="IE=edge" http-equiv="Xhtml-UA-Compatible">
	<!-- Utilisé pour faire comprendre que le site est responsive -->
	<meta content="width=device-width, initial-scale=1" name="viewport">
	<meta content="" name="Page de connexion">
	<meta content="" name="Moïse Wicht">
	<!-- La favicon est l'icône que nous pouvons avoir dans le navigateur, pas très utile à ce moment -->
	<link href="lien" rel="icon">
	<title>Application université</title>
	<link rel="stylesheet" href="css/bootstrap.min.css" />
	<link rel="stylesheet" href="css/supplement.css" />
	<script type="text/JavaScript" src="js/sha512.js"></script> 
	<script type="text/JavaScript" src="js/forms.js"></script>
	<script type="text/JavaScript" src="js/jquery-1.8.3.js"></script>
	<script type="text/JavaScript" src="js/ajax.js"></script>
</head>
	<body>
		<!-- Création de la barre de navigation en haut de la page -->
		<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
			<div class="container">
				<div class="navbar-header">
					<a href="http://www.fricopy.ch" class="brand"><img alt="" src="img/logo.png" /></a>
				</div>
			</div>
		</div>
		<div class="container">
			<div class="text-center">
				<p>Bienvenue sur l'application Toshiba. Veuillez vous connecter. </p>
			</div>
			<!-- On crée une form-shhignin , car c'est un formulaire de connexion et c'est ainsi qu'on le fait dans bootstrap -->
			<form class="form-signin" action="" method="post" name="login_form">
				<!-- Haut de page de la connexion -->
				<h1 class="form-signin-heading">Connexion</h1>
				<!-- input class, c'est pour ajouter une boîte de texte, le type en fonction de ce qui sera écrit et le placeholder permet de choisir ce que l'on veut insérer à vide -->
				<input id="mail" class="input-block-level" name="mail" type="text" placeholder="Adresse email">
				<input id="password" class="input-block-level" name="password" type="password" placeholder="Mot de passe">
				<!-- Bouton de connexion pour la base de données -->
				<input id= "connexionButton" type="submit" value="Connexion"/> 
			</form>
		</div>
		<?php include "include/footer.php"; ?>
	</body>
	</html>


MySQL.php:

<?php
class MySQL{

	private $server = 'localhost';
	private $username = 'root';
	private $password = '';
	private $link = null;
	private $port = 3306;
	private $database = 'fricopy_imprimantes';

	//Constructeur
	public function construct($_server, $_username,$_password,$_port,$_database,$_link){
		
		$this->$_server = $server;
		$this->$_username = $username;
		$this->$_password = $password;
		$this->$_port = $port;
		$this->$_database = $database;
		$this->$_link = $link;
		
	}
	
	public function connect (){
	try {
		$this->link = mysqli_connect($this->server,$this->username,$this->password,$this->database) or die("Error " . mysqli_error($this->link)); 
        //print_r($this->link);
		}
        catch (PDOException $e) {
		//print_r(error_log);;
			exit('Erreur : ' . $e->getMessage());			
		}
	}

	public function select (){
		$db_selected = mysqli_select_db($this->link,$this->database);
		//print_r("</br>");
	}
	
	/* Non-utilisée désormais
	public function connexion(){
	// on exécute maintenant la requete sql pour tester si les parametres de connexion sont ok
	$result = mysql_query("SELECT id, username, password, email, create_time  FROM users_fricopy WHERE email = '$_POST[mail]' AND password = '$_POST[password]'");
	$membre = mysql_fetch_assoc($result);
	setcookie("id",$membre[id]); // genere un cookie contenant l'id du membre
	setcookie("mail",$membre[mail]); // genere un cookie contenant le login du membre		
	}*/
	

	public function showAll(){
		$sql = "SELECT * FROM devices_fricopy";
		$query = mysqli_query($this->link,$sql);
		//print_r('------------- PRINTERS -----------------</br>');
		while($data = mysqli_fetch_assoc($query)){
			echo $data['printname'];
			echo '</br>';
		}
		//print_r('------------- END -------------------------</br>');
	}
	
	public function add($printname,$siufNumber,$serialNumber,$marque,$user_id,$model){
		$sql = 
		"INSERT INTO devices_fricopy
		(id, printname, siufNumber, serialNumber, marque, user_id, model)
		VALUES('','$printname','$siufNumber','$serialNumber','$marque','$user_id','$model')";
		$query = mysqli_query($this->link,$sql);
		//print_r('</br>---S---------- PRINTER_ADD -----------</br>');
		if(!$query ){ 
			print_r('Could not add data</br>');
		}else{
			print_r("Added data successfully\n");
		}
		//print_r('------------- END PRINTER_ADD-----</br>');
	}
	
	public function delete($id){
		$sql =
		"DELETE FROM devices_fricopy WHERE id='$id'";
		//print_r('</br>----------- PRINTER_DELETE --------</br>');
		$query = mysqli_query($this->link,$sql);
		//if(isset($id))
		if(!$query){
		print_r('Deleted data successfully\n</br>');
		}else{
		print_r('Could not delete data</br>');
		}
		
		//print_r('--------- END PRINTER_DELETE ---</br>');
	}
	public function update($printname,$siufNumber,$serialNumber,$marque,$user_id,$model){
		$sql =
		"UPDATE devices_fricopy 
		SET printname='$printname',
			siufNumber='$siufNumber',
			SserialNumber='$serialNumber',
			marque='$marque',
			user_id='$user_id',
			model='$model'";
		//print_r('------------- PRINTER_UPDATE-----</br>');
		$query = mysqli_query($this->link,$sql);
		if(!$query ){ 
			print_r('Could not update data</br>');
		}else{
			print_r('Updated data successfully\n');
		}
		//print_r('------------- END PRINTER_UPDATE-----</br>');
	}

}
?>

ajax.js:


[javascript]$(document).ready( function () {
$('form.form-signin').submit( function() { // à la soumission du formulaire
event.preventDefault(); //pas recharger la page
$.ajax({ // fonction permettant de faire de l'ajax
type: "POST", // methode de transmission des données au fichier php
url: "MySQL.php", // url du fichier php
data: $(this).serialize();
dataType: 'json';
success: function(msg){ // si l'appel a bien fonctionné
if(msg==1) // si la connexion en php a fonctionnée
{
alert(data[mail]);
alert("Connexion réussie");
}
else // si la connexion en php n'a pas fonctionnée
{
alert("Connexion échouée");
}
}
});
return false; // permet de rester sur la même page à la soumission du formulaire
});
});











[/javascript]


Que manque t'il donc pour une connexion avec AJAX/PHP/JavaScript avec mon serveur local (WAMP)?

Merci pour vos futurs éléments de réponse.

Re: PHP - Javascript/JQuery

par ciramor » 09 sept. 2014, 10:06

Tu dis que le fait que je vérifie le mail et le mdp dans MySQL.php est inutile. Je te l'accorde, mais alors toute la méthode tombe à l'eau et sera unitilisée! Donc je ne vois pourquoi par la suite tu me demandes de mettre à jour mon "echo" :

echo json_encode('1'); au lieu de echo '1';

Désolé si cette question est futile,

Bonne journée

Re: PHP - Javascript/JQuery

par ciramor » 09 sept. 2014, 07:36

Hello Nestecha,

La complicatiooooooon ! Haha, c'est toujours ainsi :(

Merci pour tous tes éléments de réponse, je vais appliquer ces derniers !

Re: PHP - Javascript/JQuery

par Nestecha » 08 sept. 2014, 19:26

La complicatioooooooooooooooooooooooooooon =D

Alors jusqu'ici, tout va bien !

Déjà, dans ton MySQL.php, tu n'as pas besoin de regarder si le mail est égal à l'autre et si le pass est égal à l'autre.

En fait, si tu fais un select avec le mail et le password et que le password ne correspond pas à l'email, il te retournera un résultat vide. Du coup, s'il n'est pas vide, c'est que le pass est bon ! Donc que l'utilisateur peut se connecter avec ces infos.

On passe sur le cryptage du pass, là tu veux juste que ça fonctionne comme ça avec le pass en clair.

Donc dans ta requête AJAX, ne la mets pas dans ton code HTML. Sépare les deux. Fais un autre fichier .js que tu inclues dans ton <head>, ce sera plus propre quand même.
Dans ton script, après la soumission du formulaire, si tu veux empêcher la page de se recharger, utilise : event.preventDefault(); juste avant d'écrire ta requête AJAX.
Pour ta requête en elle même, tu as BEAUCOUP plus simple que "data: "mail="+$("#mail").val()+"&password="+$("#password").val(), // données à transmettre" !

Tu as : data: $(this).serialize() et il récupérera tout seul tous les champs !

Ensuite, il y a peut être un soucis dans ce que tu envois avec ton fichier PHP. Essaie de mettre : "dataType: 'json'," dans ta requête, et dans ton fichier PHP :

echo json_encode('1'); au lieu de echo '1';

Je viens de voir aussi que tu as mis ton script dans ton form, NOPE ! Mets le en dehors. Aussi, dans ton script, écrit plutôt : $('form.form-signin').submit, c'est plus logique.

Essaie tout ça, et dis nous si ça le fait :)

Re: PHP - Javascript/JQuery

par Invité » 08 sept. 2014, 10:00

<form class="form-signin" action="" method="post" name="login_form">
				<!-- Haut de page de la connexion -->
				<h1 class="form-signin-heading">Connexion</h1>
				<!-- input class, c'est pour ajouter une boîte de texte, le type en fonction de ce qui sera écrit et le placeholder permet de choisir ce que l'on veut insérer à vide -->
				<input id="mail" class="input-block-level" name="mail" type="text" placeholder="Adresse email">
				<input id="password" class="input-block-level" name="password" type="password" placeholder="Mot de passe">
				<!-- Bouton de connexion pour la base de données -->
				<input id= "connexionButton" type="submit" value="Connexion"/> 
				<script>
				$(document).ready( function () { 	
					$("#connexionButton").submit( function() {	// à la soumission du formulaire					
						$.ajax({ // fonction permettant de faire de l'ajax
						   type: "POST", // methode de transmission des données au fichier php
						   url: "MySQL.php", // url du fichier php
						   data: "mail="+$("#mail").val()+"&password="+$("#password").val(), // données à transmettre
						   success: function(msg){ // si l'appel a bien fonctionné
								if(msg==1) // si la connexion en php a fonctionnée
								{
									alert("Connexion réussie");
								}
								else // si la connexion en php n'a pas fonctionnée
								{
									alert("Connexion échouée");
								}
						   }
						});
						return false; // permet de rester sur la même page à la soumission du formulaire
					});
				});
				</script>
			</form>

Re: PHP - Javascript/JQuery

par Invité » 08 sept. 2014, 09:59

Je suis entrain d'essayer, les mains dans le cambouis!
			<!-- Haut de page de la connexion -->
				<h1 class="form-signin-heading">Connexion</h1>
				<!-- input class, c'est pour ajouter une boîte de texte, le type en fonction de ce qui sera écrit et le placeholder permet de choisir ce que l'on veut insérer à vide -->
				<input id="mail" class="input-block-level" name="mail" type="text" placeholder="Adresse email">
				<input id="password" class="input-block-level" name="password" type="password" placeholder="Mot de passe">
				<!-- Bouton de connexion pour la base de données -->
				<input id= "connexionButton" type="submit" value="Connexion"/> 
<script>
$(document).ready( function () {
$("#connexionButton").submit( function() { // à la soumission du formulaire
$.ajax({ // fonction permettant de faire de l'ajax
type: "POST", // methode de transmission des données au fichier php
url: "MySQL.php", // url du fichier php
data: "mail="+$("#mail").val()+"&password="+$("#password").val(), // données à transmettre
success: function(msg){ // si l'appel a bien fonctionné
if(msg==1) // si la connexion en php a fonctionnée
{
alert("Connexion réussie");
}
else // si la connexion en php n'a pas fonctionnée
{
alert("Connexion échouée");
}
}
});
return false; // permet de rester sur la même page à la soumission du formulaire
});
});
</script>[/html]

Re: PHP - Javascript/JQuery

par Invité » 08 sept. 2014, 09:32

Voilà ma fonction de connexion dans MySQL.php
public function connexion(){
	// on exécute maintenant la requete sql pour tester si les parametres de connexion sont ok
	$result = mysql_query("SELECT id, username, password, email, create_time  FROM users_fricopy WHERE email = '$_POST[email]' AND password = '$_POST[password]'");
	$membre = mysql_fetch_assoc($result);
 
	if(($_POST[mail]==$membre[mail])&&($_POST[password]==$membre[password])){
		setcookie("id",$membre[id]); // genere un cookie contenant l'id du membre
		setcookie("mail",$membre[mail]); // genere un cookie contenant le login du membre		
		echo "1"; // on 'retourne' la valeur 1 au javascript si la connexion est bonne
		}
	else 
		{
		echo "0"; // on 'retourne' la valeur 0 au javascript si la connexion n'est pas bonne
		}
	}

Re: PHP - Javascript/JQuery

par Invité » 08 sept. 2014, 08:48

Comment utiliser ce mechanisme pour récupérer les 2 inputs, les traiter et les vérifier, puis établir la connexion? Engros ;)

PHP - Javascript/JQuery

par ciramor » 08 sept. 2014, 08:45

Bonjour à tous.

Je travaille actuellement sur un site web, et je dois gérer la partie "Connexion" pour les utilisateurs de ce dernier. Etant débutant en PHP, ainsi que la technologie AJAX, je viens solliciter votre aide.

J'aimerais bien réussir à faire donc un évènement et récupérer des données!

Voici ce que j'ai fait à propos de Javascript/AJAX :

Ajout de JQuery:
<script type="text/JavaScript" src="js/jquery-1.8.3"></script>
Ajout de l'écouteur sur le bouton de connexion:
<input class="input-block-level" name="username" type="text" placeholder="Adresse email">
<input class="input-block-level" name="password" type="password" placeholder="Mot de passe">
<!-- Bouton de connexion pour la base de données -->
<input id= "connexionButton" type="submit" value="Connexion"/> 
<script type="text/javascript">
	$( "#connexionButton" ).click(function() {
                // Récupérer données
	});
</script>
Maintenant, c'est ici que je bloque. Comment récupérer les données d'un autre fichier PHP, en l’occurrence "MySQL.php". Et est-ce que l'écouteur fonctionnerait comme ceci ?

Merci pour vos futures aides.

Cdlt,

Ciramor