Partage
  • Partager sur Facebook
  • Partager sur Twitter

[TUTO] MVC, bonnes pratiques et site complet !

Espace membres - À venir : livre d'or, news, etc.

3 février 2012 à 2:18:13

bonjour à tous,
Je viens de remarquer que si un attribut required(false) existe dans un champs de formulaire de type texte, les vérifications ne se font pas (regex, longueur de caractères, etc.). C'est embêtant... j'ai trouvé une manière de coriger le pb mais je ne sais pas si c'est juste, alors si quelqu'un pouvait m'aiguiller...
En fait je vérifie que la valeur ne vaut pas rien, dans dans la méthode is_valid de la classe Form_text :

<?php
public function is_valid($value) {

if (parent::is_valid($value)) {

			if(!empty($value))
			{
				if ($this->motifRegex !== null)
				{
					if (0 < preg_match('`'.$this->motifRegex.'`', $value))
						return true;
					$this->_error('regex');
				}
				else
					return true;
				
				return false;
			}
		}


Si ça peut aider... :)
  • Partager sur Facebook
  • Partager sur Twitter
21 février 2012 à 18:38:49

Citation : Yvanaya

J'ai une question... lorsque je modifie le profil rien ne se sauvegarde.... une fois cliqué sur "modifier ces informations" j'atterie sur ma page d'accueil...



Bonjour,

J'ai le même problème qu'Yvanaya, lorsque je valide les informations à modifier je suis renvoyée sur la page d'accueil et les modifications ne sont pas prises en compte...
Je bloque là-dessus depuis plusieurs heures, je ne comprends pas pourquoi l'index est appelé à la place de la vue formulaires_modifier_profil.

Je serais vraiment pas contre un petit peu d'aide :-°

Sinon, merci pour ce tuto vraiment bien fait :)

Voilà mon code :

modifier_profil.php

<?php

// Vérification des droits d'accès de la page
if (!utilisateur_est_connecte()) {

	// On affiche la page d'erreur comme quoi l'utilisateur doit être connecté pour voir la page
	include CHEMIN_VUE_GLOBALE.'erreur_non_connecte.php';
	
} else {
	
	// Ne pas oublier d'inclure la librairie Form
	include CHEMIN_LIB.'form.php';
	
	// Création du formulaire pour l'email et l'avatar
	$form_modif_infos = new Form("form_modif_infos");
	
	$form_modif_infos->add('Email', 'email')
                         ->label("Votre adresse email")
                         ->Required(false)
                         ->value($_SESSION['email']);
	
	$form_modif_infos->add('Checkbox', 'suppr_avatar')
                         ->label("Je veux supprimer mon avatar")
                         ->value(true)
                         ->Required(false);
	
	$form_modif_infos->add('File', 'avatar')
                         ->filter_extensions('jpg', 'png', 'gif')
                         ->max_size(20480) // 20 Kb
                         ->label("Votre avatar (facultatif)")
                         ->Required(false);
	
	$form_modif_infos->add('Submit', 'submit')
                         ->value("Valider");
	
	// Création du formulaire pour le mot de passe
	$form_modif_mdp = new Form("form_modif_mdp");
	
	$form_modif_mdp->add('Password', 'mdp_ancien')
                       ->label("Votre ancien mot de passe");
	
	$form_modif_mdp->add('Password', 'mdp')
                       ->label("Votre nouveau mot de passe");
	
	$form_modif_mdp->add('Password', 'mdp_verif')
                       ->label("Votre nouveau mot de passe (vérification)");
	
	$form_modif_mdp->add('Submit', 'submit')
                       ->value("Valider");
	
	// Création des tableaux des erreurs (un par formulaire)
	$erreurs_form_modif_infos = array();
	$erreurs_form_modif_mdp   = array();
	
	// et d'un tableau des messages de confirmation
	$msg_confirm = array();
	
	// Validation des champs suivant les règles en utilisant les données du tableau $_POST
	if ($form_modif_infos->is_valid($_POST)) {
	
		list($email, $suppr_avatar, $avatar) = $form_modif_infos->get_cleaned_data('email', 'suppr_avatar', 'avatar');
	
		// On veut utiliser le modèle de l'inscription(~/modules/membres.php)
		include CHEMIN_MODELE.'membres.php';
	
		// Si l'utilisateur veut modifier son adresse e-mail
		if (!empty($adresse_email)) {
	
			$test = maj_email_membre($_SESSION['id'], $email);
	
			if (true == $test) {
	
				// Ça a marché, trop cool !
				$msg_confirm[] = "Adresse email mise à jour avec succès !";
	
			// Gestion des doublons
			} else {
	
				// Changement de nom de variable (plus lisible)
				$erreur =& $test;
	
				// On vérifie que l'erreur concerne bien un doublon
				if (23000 == $erreur[0]) { // Le code d'erreur 23000 signifie "doublon" dans le standard ANSI SQL
	
					preg_match("`Duplicate entry '(.+)' for key \d+`is", $erreur[2], $valeur_probleme);
					$valeur_probleme = $valeur_probleme[1];
	
					if ($adresse_email == $valeur_probleme) {
	
						$erreurs_form_modif_infos[] = "Cette adresse email est déjà utilisée.";
	
					} else {
	
						$erreurs_form_modif_infos[] = "Erreur ajout SQL : doublon non identifié présent dans la base de données.";
					}
	
				} else {
	
					$erreurs_form_modif_infos[] = sprintf("Erreur ajout SQL : cas non traité (SQLSTATE = %d).", $erreur[0]);
				}
	
			}
		}
	
		// Si l'utilisateur veut supprimer son avatar...
		if (!empty($suppr_avatar)) {
	
			maj_avatar_membre($_SESSION['id'], '');
			$_SESSION['avatar'] = '';
	
			$msg_confirm[] = "Avatar supprimé avec succès !";
	
		// ... ou le modifier !
		} else if (!empty($avatar)) {
	
			// On souhaite utiliser la librairie Image
			include CHEMIN_LIB.'image.php';
	
			// Redimensionnement et sauvegarde de l'avatar
			$avatar = new Image($avatar);
			$avatar->resize_to(AVATAR_LARGEUR_MAXI, AVATAR_HAUTEUR_MAXI); 
			$avatar_filename = DOSSIER_AVATAR.$id_utilisateur .'.'.strtlower(pathinfo($avatar->get_filename(), PATHINFO_EXTENSION));
			$avatar->save_as($avatar_filename);
	
			// On veut utiliser le modèle des membres (~/modules/membres.php)
			include CHEMIN_MODELE.'membres.php';
	
			// Mise à jour de l'avatar dans la table
			// maj_avatar_membre() est définit dans ~/modules/membres.php
			maj_avatar_membre($_SESSION['id'] , $avatar_filename);
			$_SESSION['avatar'] = $avatar_filename;
	
			$msg_confirm[] = "Avatar modifié avec succès !";
		}
	
	} else if ($form_modif_mdp->is_valid($_POST)) {
	
		// On vérifie si les 2 mots de passe correspondent
		if ($form_modif_mdp->get_cleaned_data('mdp') != $form_modif_mdp->get_cleaned_data('mdp_verif')) {
	
			$erreurs_form_modif_mdp[] = "Les deux mots de passes entrés sont différents !";
	
		// C'est bon, on peut modifier la valeur dans la BDD
		} else {
	
	
			// On veut utiliser le modèle de l'inscription (~/modules/membres.php)
			include CHEMIN_MODELE.'membres.php';
			maj_mdp_membre($_SESSION['id'], $mdp);
	
			$msg_confirm[] = "Votre mot de passe a été modifié avec succès !";
		}
	
	}
   
   // Affichage des formulaires de modification du profil
   include CHEMIN_VUE.'formulaires_modifier_profil.php';
}


et formulaires_modifier_profil

<h2>Modification de votre profil utilisateur</h2>

<?php

if (!empty($msg_confirm)) {

	echo '<ul>'."\n";

	foreach($msg_confirm as $m) {

		echo '	<li>'.$m.'</li>'."\n";
	}

	echo '</ul>';
}

if (!empty($erreurs_form_modif_infos)) {

	echo '<ul>'."\n";

	foreach($erreurs_form_modif_infos as $e) {

		echo '	<li>'.$e.'</li>'."\n";
	}

	echo '</ul>';
}

$form_modif_infos->fieldsets(array("Modification de l'e-mail et de l'avatar" => array('email', 'suppr_avatar', 'avatar')));

echo $form_modif_infos;

if (!empty($erreurs_form_modif_mdp)) {

	echo '<ul>'."\n";

	foreach($erreurs_form_modif_mdp as $e) {

		echo '	<li>'.$e.'</li>'."\n";
	}

	echo '</ul>';
}

$form_modif_mdp->fieldsets(array("Modification du mot de passe" => array('mdp_ancien', 'mdp', 'mdp_verif')));

echo $form_modif_mdp;
  • Partager sur Facebook
  • Partager sur Twitter
21 février 2012 à 20:20:41

Tu peux essayer de mettre "en dur" le lien vers lequel est posté ton form avec un
<?php
$form_modif_infos->action(''); // pr dire que ça renvoie à la même page, ou avec un lien vers la page de traitement du formulaire
?>

  • Partager sur Facebook
  • Partager sur Twitter
21 février 2012 à 20:54:49

J'ai essayé avec un renvoi vers la même page et un renvoi vers une page de traitement du formulaire, dans les deux cas je retourne à l'accueil.

Par contre si je renvoie vers une page qui n'a rien à voir (par exemple ma page de confirmation de connexion), là j'arrive bien sur cette page...
  • Partager sur Facebook
  • Partager sur Twitter
25 février 2012 à 7:37:00

Bonjour,

quelques questions au sujet du tutoriel se Savageman

1 -dans le formulaire de modification du profil d'un membre, lorsque je renseigne un nouvel email et que je clique sur le bouton "Modifier ces informations", le nouvel email est bien enregistré dans la base de données mais c'est l'ancien email qui est affiché !!
Pourquoi et comment résoudre ce problème ?

2 - les fichiers avatars ont une extension.tmp et ne sont donc pas affichés. Comment avoir une extension .jpg ou .png ?

3 -Y a t-il les sources du tutoriel avec les toutes dernières modifications quelque part ?

Merci de votre aide
  • Partager sur Facebook
  • Partager sur Twitter
29 février 2012 à 1:47:20

:) Bonsoir,
je tente des petites réponses (peu sûres) et viens poser la mienne... hé-hé...

Malexx : à priori, l'index peut-être appelé à chaque fois qu'une page n'est pas trouvée ("module"(qui doit se trouver dans modeles) ou "action"(qui doit se trouver dans modules puis dans le dossier du même nom que le module) inexistant).

Alain 1717 : comme beaucoup d'entre nous, tu vas devoir te coltiner les 26 pages, c'est moche mais c'est comme ça. Y a pas plus pratique (Tu peux cependant répertorier chacune des solutions trouvées et nous rédiger un bref récapitulatif... mais c'est du job...).
1- est-ce que par hasard tu n'affiches pas ce que tu as enregistré en session (et non mit à jour)?
2- la solution est dans les premières pages je crois (fais un pti ctrl F sur .tmp, & tu devrais trouver fastoche ;) )
3- cf intro

Bon ce ne sont que des pistes, et je suis désolée d'avance si je vous égare...

J'ai une petite question sur la connexion automatique quant à moi. Je ne comprends pas comment ça fonctionne. Chaque fois que j'ai un password à enregistrer par la biais du formulaire, j'ai mes anciennes données qui automatiquement s'insèrent tels que s'ils étaient : nom d'utilisateur & password. Comment empêcher celà? mes champs ne sont pourtant pas nommés pareils.j'ai détruit session & cookies... je ne comprends pas là... qqch m'échappe...

j'ai l'impression qu'un petit lutin s'est glissé dans mon Nourdine et joue avec mes nerfs...
et il m'énerve... :colere2:
  • Partager sur Facebook
  • Partager sur Twitter
10 avril 2012 à 18:08:14

bonjour à tous.
Je ne comprend toujours pas comment intégrer du style dans un formulaire issu de la classe Form.
Comment placer des id ou des class sur les inputs par exemple ?
merci
  • Partager sur Facebook
  • Partager sur Twitter
7 mai 2012 à 18:29:08

Bonjour,

Juste une petite question, comment faire pour activer le debug avec pdo2? Je doit avoir une erreur sql mais rien ne s'affiche ^^

Malexx : $form_modif_infos = new Form("form_modif_infos");
Il manque le post ^^
$form_modif_infos = new Form("form_modif_infos", "POST");
  • Partager sur Facebook
  • Partager sur Twitter
4 septembre 2012 à 14:29:04

Le message qui suit est une réponse automatique.
Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
Nous sommes néanmoins ouverts à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


Manque d'informations sur le problème


Bonjour,

Le message que tu as posté n'est pas assez détaillé pour que les zéros puissent t'aider.
Afin de faciliter la tâche des autres membres, il t'est demandé d'expliquer ce que tu cherches à faire et ce qui ne va pas. Il te faut donc fournir les messages d'erreur obtenus et/ou expliquer le comportement inattendu de ton script.
Te contenter de fournir ton code en disant « ça ne marche pas » n'est pas suffisant.

Je t'invite donc à modifier ton message afin de le clarifier.

Merci de ta compréhension. :)
  • Partager sur Facebook
  • Partager sur Twitter
7 novembre 2012 à 2:22:31

J'ai l'erreur suivante qui s'affiche "Notice: Undefined offset: 1 in C:\MonSite\modules\membres\inscription.php on line 134"

Je ne n'en trouve pas la cause.
Je pense que je dois avoir un problème au niveau de la vérification de l'unicité de pseudo car dans mon formulaire j'ai "Ce nom d'utilisateur est déjà utilisé." alors que je n'ai encore rien tapé.


<?php

// Ne pas oublier d'inclure la librarie Form
include CHEMIN_LIB.'form.php';

// "formulaire_inscription" est l'ID unique du formulaire
$form_inscription = new Form('formulaire_inscription');

$form_inscription->method('POST');

$form_inscription->add('Text', 'nom_utilisateur')
                 ->label("Votre nom d'utilisateur");

$form_inscription->add('Password', 'mdp')
                 ->label("Votre mot de passe");

$form_inscription->add('Password', 'mdp_verif')
                 ->label("Votre mot de passe (vérification)");

$form_inscription->add('Email', 'adresse_email')
                 ->label("Votre adresse email"); 

$form_inscription->add('File', 'avatar')
                 ->filter_extensions('jpg', 'png', 'gif')
                 ->max_size(8192) // 8 Kb
                 ->label("Votre avatar (facultatif)")
                 ->Required(false);

$form_inscription->add('Submit', 'submit')
                 ->value("Je veux m'inscrire !");

// Pré-remplissage avec les valeurs précédemment entrées (s'il y en a)
$form_inscription->bound($_POST);

// Création d'un tableau des erreurs
$erreurs_inscription = array();

// Validation des champs suivant les règles en utilisant les données du tableau $_POST
if ($form_inscription->is_valid($_POST)) {

	// On vérifie si les 2 mots de passe correspondent
	if ($form_inscription->get_cleaned_data('mdp') != $form_inscription->get_cleaned_data('mdp_verif')) {

		$erreurs_inscription[] = "Les deux mots de passes entrés sont différents !";
	}

	// Si d'autres erreurs ne sont pas survenues
	if (empty($erreurs_inscription)) {

		// Traitement du formulaire à faire ici

	} else {

		// On affiche à nouveau le formulaire d'inscription
		include CHEMIN_VUE.'formulaire_inscription.php';
	}

} /* else {

	// On affiche à nouveau le formulaire d'inscription
	include CHEMIN_VUE.'formulaire_inscription.php';
}*/





// Tire de la documentation PHP sur <http://fr.php.net/uniqid>
$hash_validation = md5(uniqid(rand(), true));

// Tentative d'ajout du membre dans la base de donnees
list($nom_utilisateur, $mot_de_passe, $adresse_email, $avatar) =
	$form_inscription->get_cleaned_data('nom_utilisateur', 'mdp', 'adresse_email', 'avatar');

// On veut utiliser le modele de l'inscription (~/modeles/inscription.php)
include CHEMIN_MODELE.'inscription.php';

// ajouter_membre_dans_bdd() est défini dans ~/modeles/inscription.php
$id_utilisateur = ajouter_membre_dans_bdd($nom_utilisateur, sha1($mot_de_passe), $adresse_email, $hash_validation);

// Si la base de données a bien voulu ajouter l'utliisateur (pas de doublons)
if (ctype_digit($id_utilisateur)) {

	// On transforme la chaine en entier
	$id_utilisateur = (int) $id_utilisateur;
	
	// Preparation du mail
	$message_mail = '<html><head></head><body>
	<p>Merci de vous être inscrit sur "mon site" !</p>
	<p>Veuillez cliquer sur <a href="'.$_SERVER['PHP_SELF'].'?module=membres&amp;action=valider_compte&amp;hash='.$hash_validation.'">ce lien</a> pour activer votre compte !</p>
	</body></html>';
	
	$headers_mail  = 'MIME-Version: 1.0'                           ."\r\n";
	$headers_mail .= 'Content-type: text/html; charset=utf-8'      ."\r\n";
	$headers_mail .= 'From: "Mon site" <contact@monsite.com>'      ."\r\n";
	
	// Envoi du mail
	mail($form_inscription->get_cleaned_data('adresse_email'), 'Inscription sur <monsite.com>', $message_mail, $headers_mail);
	
	// Redimensionnement et sauvegarde de l'avatar (eventuel) dans le bon dossier
	if (!empty($avatar)) {

		// On souhaite utiliser la librairie Image
		include CHEMIN_LIB.'image.php';
	
		// Redimensionnement et sauvegarde de l'avatar
		$avatar = new Image($avatar);
		$avatar->resize_to(100, 100); // Image->resize_to($largeur_maxi, $hauteur_maxi)
		$avatar_filename = 'images/avatar/'.$id_utilisateur .'.'.strtolower(pathinfo($avatar->get_filename(), PATHINFO_EXTENSION));
		$avatar->save_as($avatar_filename);

		// On veut utiliser le modele des membres (~/modeles/membres.php)
		include CHEMIN_MODELE.'membres.php';
		
		// Mise à jour de l'avatar dans la table
		// maj_avatar_membre() est défini dans ~/modeles/membres.php
		maj_avatar_membre($id_utilisateur , $avatar_filename);

	}
	
	// Affichage de la confirmation de l'inscription
	include CHEMIN_VUE.'inscription_effectuee.php';

// Gestion des doublons
} else {

	// Changement de nom de variable (plus lisible)
	$erreur =& $id_utilisateur;
	
	// On vérifie que l'erreur concerne bien un doublon
	if (23000 == $erreur[0]) { // Le code d'erreur 23000 siginife "doublon" dans le standard ANSI SQL
	
		preg_match("`Duplicate entry '(.+)' for key \d+`is", $erreur[2], $valeur_probleme);
		$valeur_probleme = $valeur_probleme[1];
		
		if ($nom_utilisateur == $valeur_probleme) {
		
			$erreurs_inscription[] = "Ce nom d'utilisateur est déjà utilisé.";
		
		} else if ($adresse_email == $valeur_probleme) {
		
			$erreurs_inscription[] = "Cette adresse e-mail est déjà utilisée.";
		
		} else {
		
			$erreurs_inscription[] = "Erreur ajout SQL : doublon non identifié présent dans la base de données.";
		}
	
	} else {
	
		$erreurs_inscription[] = sprintf("Erreur ajout SQL : cas non traité (SQLSTATE = %d).", $erreur[0]);
	}
	
	// On reaffiche le formulaire d'inscription
	include CHEMIN_VUE.'formulaire_inscription.php';
}


Sinon merci pour ce tuto qui est vraiment super
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 18:01:46

Bonjour,
J'ai le même probleme que lana97500, quelq'un aurait la solution ?
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 18:11:31

bah valeurprobleme[1] n'existe pas tout simplement. donc soit ta regex est fausse soit elle ne fait pas ce que tu veux.
Je t'encourage à tester ta regex sur un site de test comme celui ci http://www.annuaire-info.com/outil-referencement/expression-reguliere/.

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 18:24:48

Bingo Merci beaucoup
Saurais tu d'ou me vient mes erreurs:
incription:
Cannot redeclare maj_avatar_membre() (previously declared in C:\wamp\www\New1\Site\modeles\membres.php:3) in C:\wamp\www\New1\Site\modeles\membres.php on line 16
et même une fois les données inscrit dans la base je ne peux me connecter:
erreur de connexion:
Fatal error: Cannot redeclare valider_compte_avec_hash() (previously declared in C:\wamp\www\MVC\modeles\membres.php:3) in C:\wamp\www\MVC\modeles\membres.php on line 17

Il semble y avoir un doublon dans les declarations?
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 18:25:54

Bah traduis le message d'erreur et tu as ta réponse...
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 18:44:48

Je comprend que je redeclare une variable a la ligne 3 et a lafin de mafonction lifne 17
<?php

function maj_avatar_membre($id_utilisateur , $avatar) {

$pdo = PDO2::getInstance();

$requete = $pdo->prepare("UPDATE membres SET
avatar = :avatar
WHERE
id = :id_utilisateur");

$requete->bindValue(':id_utilisateur', $id_utilisateur);
$requete->bindValue(':avatar', $avatar);

return $requete->execute();
}
Etant debutant je ne comprend pas comment le resoudre, en changeant le nom de la variables?
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 18:56:33

Tu comprends surtout pas l'anglais en fait ...

Cannot redeclare maj_avatar_membre() (previously declared in C:\wamp\www\New1\Site\modeles\membres.php:3) in C:\wamp\www\New1\Site\modeles\membres.php on line 16

Ne re-déclarer pas maj_avatar_membre() dans C:\wamp\www\New1\Site\modeles\membres.php à la ligne 16
Car elle est déjà déclarée dans C:\wamp\www\New1\Site\modeles\membres.php à la ligne 3

Ce qui veut dire, que tu déclares une fonction 2x, la 1ère fois à la ligne 3 et la 2ème fois à la ligne 16.
Une fonction, une fois qu'elle est déclaré, elle l'est pour toute la suite du fichier ! Tu peux donc t'en servir plusieurs fois.
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 19:11:49

Merci, je vais tenter de supprimer la re-declaration ligne 17.
Ca fait une semaine que je tente de me connecter sur l'espace membre...
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 19:25:15

J'irais même plus loin en fait, une fois qu'elle est déclarée, elle l'est pour toute la suite d'instruction, y compris pour les include/require effectué après la déclaration de la fonction. Y compris si la fonction est elle-même dans un fichier inclus ! UN exemple sera plus parlant

<?php
// Déclaration d'un fichier contenant la déclaration d'une fonction
function maFonctionEcho($string) {
    echo $string;
}


<?php
// Un fichier qui utilise la fonction maFonction(string)
maFonctionEcho("Hello world<br/>");


<?php
// Un fichier index quelconque
include 'maFonction.php';

maFonctionEcho('Bonjour le monde !<br/>');

include 'hello.php';

maFonctionEcho('Salut à tous.');


Bonjour le monde !<br/>
Hello world<br/>
Salut à tous.
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 19:35:57

Merci j'y vois plus clair, faut que je cherche dans mes includes où mes variables sont deja declarées
  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 19:38:10

Les messages d'erreur de double déclaration de fonctions te le disent où sont déclarées la fonction.

Citation

Cannot redeclare maj_avatar_membre() (previously declared in C:\wamp\www\New1\Site\modeles\membres.php:3)
in C:\wamp\www\New1\Site\modeles\membres.php on line 16

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2012 à 19:55:22

ca ponte sur le "return true;" de la même fonction"


Fonction { var1, var2'....

$requete->bindValue(':var1);
$requete->bindValue(':var2);
}
Je bug
Qui aurai un modeles/membre.php qui fonctionne?
  • Partager sur Facebook
  • Partager sur Twitter
21 décembre 2012 à 23:01:03

Salut, je vien de voir sur StockOverFlow.com que l'utilization de
<a href="<?php echo $_SERVER['HTTP_REFERER'];?>">Revenir à la page précédente</a>
qu'on a utilise dans deconnexion_ok.php peut construire un appat pour les hackers. La solution proposee a ete de faire recour au code javascript come xa
<a href="#" onclick="history.back(); return false;">Revenir à la page précédente</a>


A Chacun de vous de decider son destin!
  • Partager sur Facebook
  • Partager sur Twitter
10 mai 2013 à 0:01:31

Duowen a écrit:

Bingo Merci beaucoup
Saurais tu d'ou me vient mes erreurs:
incription:
Cannot redeclare maj_avatar_membre() (previously declared in C:\wamp\www\New1\Site\modeles\membres.php:3) in C:\wamp\www\New1\Site\modeles\membres.php on line 16
et même une fois les données inscrit dans la base je ne peux me connecter:
erreur de connexion:
Fatal error: Cannot redeclare valider_compte_avec_hash() (previously declared in C:\wamp\www\MVC\modeles\membres.php:3) in C:\wamp\www\MVC\modeles\membres.php on line 17

Il semble y avoir un doublon dans les declarations?



Bonjour Duowen !

Il semble que tu est réussit à corriger la regex. Aprés de nombreux essais sur des testeurs de regexs en ligne, je n'arrive pas à résoudre ce probleme de "Notice: Undefined offset: 1 in C:\MonSite\modules\membres\inscription.php on line 134"

Peut tu partager ta solution, ça m'aiderai bien  et ça ferai avancer ce très bon tutoriel qui semble être tombé à l'abandon malheureusement !


Merci bien!

  • Partager sur Facebook
  • Partager sur Twitter
7 juin 2013 à 11:28:20

Très bon tuto, je voulais juste savoir s'il n'y a pas un dossier zip quelque part à télécharger avec l'ensemble des fichiers sources. où pour essayer l'application chez soi il faut faire du copier coller du code présent dans le tuto.
  • Partager sur Facebook
  • Partager sur Twitter
7 juin 2013 à 11:48:52

où pour essayer l'application chez soi il faut faire du copier coller du code présent dans le tuto.

Ou simplement coder toi même !

  • Partager sur Facebook
  • Partager sur Twitter
7 juin 2013 à 22:43:08


Benux12 a écrit:

Il semble que tu est réussit à corriger la regex. Aprés de nombreux essais sur des testeurs de regexs en ligne, je n'arrive pas à résoudre ce probleme de "Notice: Undefined offset: 1 in C:\MonSite\modules\membres\inscription.php on line 134"

Peut tu partager ta solution, ça m'aiderai bien  et ça ferai avancer ce très bon tutoriel qui semble être tombé à l'abandon malheureusement !


Merci bien!

voici comment je viens de résoudre ce problème (si ça peux aider) je ne mets que la partie du bout de code d'inscription.php qui pose problème

// Changement de nom de variable (plus lisible)
				$erreur =& $id_utilisateur;
				// On vérifie que l'erreur concerne bien un doublon
				if (23000 == $erreur[0]) { // Le code d'erreur 23000 siginife "doublon" dans le standard ANSI SQL
					
					$mess_erreur_sql = $erreur[2];
					
					$trouver = strpos($mess_erreur_sql, $nom_utilisateur);
					if ($trouver === false) {
						$trouver = strpos($mess_erreur_sql, $adresse_email);
						if ($trouver === false) {
							$erreurs_inscription[] = "Erreur ajout SQL : doublon non identifié présent dans la base de données.";							
						} else {
							$erreurs_inscription[] = "Cette adresse e-mail est déjà utilisée.";
						}
						
					} else {
						$erreurs_inscription[] = "Ce nom d'utilisateur est déjà utilisé.";
					}
					
				} else {
				 
					$erreurs_inscription[] = sprintf("Erreur ajout SQL : cas non traité (SQLSTATE = %d).", $erreur[0]);
				}
				 
				// On reaffiche le formulaire d'inscription
				include CHEMIN_VUE.'formulaire_inscription.php';

par contre quelqu'un a-t-il trouvé comment afficher les erreurs non pas en dessous de input mais juste à côté ...j'ai pas encore beaucoup cherché mais si quelqu'un a déjà la solution why not ,-)

  • Partager sur Facebook
  • Partager sur Twitter
19 juin 2013 à 23:24:54

Super tuto mais je n'arrive pas à trouver comment modifier un élément dans un formulaire déjà créé...

ex:

form_nom = new Form('formulaire_nom');
$form_nom->method('POST');
$form_nom->add('Select', 'listeNom')
                 ->Required(false)
                 ->choices($listeNoms);
$form_nom->add('Submit', 'submit')
                 ->value("Supprimer le nom sélectionné ?");   
$form_nom->fieldsets(array("Liste des noms" => array('listeNom')));

// un peu de code ici qui modifie le contenu de $listeNoms

comment je fais pour mettre la balise select à jour avec le nouveau contenu de $listeNoms ?

-
Edité par pierrot78 25 juin 2013 à 23:11:51

  • Partager sur Facebook
  • Partager sur Twitter
24 juin 2013 à 23:21:00

Comment imposer une valeur dans une balise select ? Par exemple, si j'ai une liste comme celle-ci :

$maListe = array('auteur'=>'auteur', 'realisateur'=>'realisateur', 'producteur'=>producteur')

comment faire pour que :

1. le choix par défaut soit 'realisateur'

2. au rechargement de la page, si l'utilsateur avait choisi 'producteur', ce soit cette option de choisie

-
Edité par pierrot78 25 juin 2013 à 23:14:21

  • Partager sur Facebook
  • Partager sur Twitter
25 juin 2013 à 8:47:37

dans la balise "option" il faut mettre l'attribut "selected" pour que ça soit celle là qui soit ajoutée.

  • Partager sur Facebook
  • Partager sur Twitter
25 juin 2013 à 23:10:21

En HTML je le savais ;)

..., mais comment fait-on avec la classe Form ?

-
Edité par pierrot78 25 juin 2013 à 23:14:16

  • Partager sur Facebook
  • Partager sur Twitter