8791 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Oui Nolem, j'ai vu... d'ailleurs j'ai édité mon message précédent.
Pour les doubles guillemets ce que tu dit est certainement vrai..
Cependant je voudrais juste rajouter que le </p> et </a> seraient certainement mieux inversés... Smiley cligne
Mais sinon toujours de très bon conseils, on sent l'expérience... Smiley murf
Modifié par Dim (26 Jul 2008 - 21:08)
Modérateur
a écrit :

Mais sinon toujours de très bon conseils, on sent l'expérience... murf

Smiley confused

Erf pas vu la fautes html. Smiley murf
Exact, je n'ai pas vu l'erreur des balises «chevauchantes».

++

PS : Rand, j'ai depuis bien longtemps opter pour wamp Smiley cligne
Ben justement, le verdict de wamp est tombé :

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\test\mail.php on line 5

ce qui correspond à cette ligne :
$from=htmlspecialchars( "From: " $par $votreprenom $votrenom .$votremail."\r\n");  


Ce que je voudrais c'est que le destinataire du message voit dans le champ "from" la qualité (M, Mme, Melle), le nom, le prénom puis l'email mais manifestement je m'y prend mal...
Modifié par Rand (26 Jul 2008 - 21:28)
Alors je vais pas être d'un grand recours car je maitrise pas encore très bien le sujet. Mais ce que je remarque c'est que tu utilise de la "concaténation" (c'est comme ça que cela s'appel???) que pour un et pas les autres...
Ensuite moi personnellement je n'aurais pas fait comme ça mais plutôt:


$from=htmlspecialchars( "From: $par $votreprenom $votrenom $votremail\r\n"); 

Après pour ce qui est de la façon d'imbriquer le htmlspecialchars je suis pas très sur...
Pour ma part voila à quoi ressemble mon code:


	$adress = "davdimtiph@wanadoo.fr";
	$nom = htmlspecialchars($_POST['nom']);		// On rend inoffensives les balises HTML que le visiteur a pu rentrer
	$email = htmlspecialchars($_POST['email']);		// On rend inoffensives les balises HTML que le visiteur a pu rentrer
	$message = htmlspecialchars($_POST['message']);		// On rend inoffensives les balises HTML que le visiteur a pu rentrer
	$webSite = htmlspecialchars($_POST['webSite']);		// On rend inoffensives les balises HTML que le visiteur a pu rentrer
	$option=$_POST['option'];

	$jour = date("d");
	$mois = date("m");
	$annee = date("Y");
	$heure = date("H");
	$minute = date("i");
	
	$sujet = "Formulaire du site";
	$date = "Date: $jour/$mois/$annee\nHeure: $heure:$minute";
	$mess = "Nom: {$_POST['nom']}\nE-mail: {$_POST['email']}\nSite: {$_POST['webSite']}\n $date\n";
    $entete = "Return-Path: $adress\r\n";
	$entete .= "From:  www.monsite.fr<$adress>\n";


Regarde un peut comment ce passe ma variable $date, le principe est un peut le même pour ta variable from. (il me semble)
Bon courage Smiley cligne

[EDIT] Je viens de reregarder ton code php, as tu défini autre part tes variables par prenom nom.... en faisant:

$par= htmlspecialchars($_POST['par']);

La même chose pour les suivantes...
ensuite tu défini ta variable from comme j'ai fait pour ma variable date...
Ou sinon
$mess = "From: {$_POST['par']}\nPrenom: {$_POST['prenom']}\nNom: {$_POST['nom']}\n;

C'est le principe, mais je débute donc je suis pas sur à 100% de ce que j'avance...
Bon courage et bonne nuit
Modifié par Dim (27 Jul 2008 - 00:00)
Salut, salut,

bon... je ne suis pas le Dieu des Dieux en PHP mais franchement Dim et Nolem... hem... c'est un peu du n'importe quoi ce que vous dites Smiley rolleyes !

C'est sympa de vouloir dépanner mais ça manque cruellement d'expérience et du coup vos "explications" sont plus embrouillantes qu'autre chose...

@Rand > comme je te l'avais déjà dit, tu n'es pas sur un forum de débutants PHP. Si tu reprends un code du Site du Zero et que ça ne fonctionne pas, tu devrais poser ta question directement sur leur forum (je suppose qu'ils en ont un Smiley murf ).


Parmi les choses à revoir :

* récupération des variables envoyées par un formulaire.

* concaténation des chaînes de caractères. Les lignes suivantes sont incorrectes :
$from=htmlspecialchars( "From: " $par $votreprenom $votrenom .$votremail."\r\n");  

[b]et[/b]

echo "<p>Votre message a bien été envoyé, merci.<br><a href="accueil.html">Cliquez ici pour revenir sur la page d'accueil</p></a>" ;

* agencement des balises :
[b]remplacer[/b]
<p>Blabla<a href="monlien.html">Mon mien</p></a>
[b]par[/b]
<p>Blabla<a href="monlien.html">Mon mien</a></p>

* Et plus si affinités ! Smiley cligne


Au passage
elseif (trim($message)=="")
est tout à fait valide et contrairement à
elseif (empty($message))
permet de vérifier que le message ne contient pas que des espaces...

Au risque de me répéter les points ci-dessus font vraiment partie du B.A BA du PHP.

Bonne continuation. Smiley smile
Salut Heyoan,
Dieu du PHP (il manque un smile pour montrer que je me soumet à toi... Smiley smile ). Effectivement pour ma part c'est peut être un peu du n'importe quoi...( je débute donc faut pas trop m'en vouloir... Smiley decu )
Donc si mes explications sont plus embrouillantes qu'autre chose, je vais peut être me taire...
Rand, suis les bons conseils d'Heyoan et ne lit pas mes postes... Smiley cligne
Bon dimanche à tous
Bonjour.
Bon j'ai été voir qques cours de php sur le net pout modifier le formulaire; ça donne ça :


<?php

$verif='!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!';
 
$par=$_POST['par'];
$votreprenom=$_POST['votreprenom'];
$votrenom=$_POST['votrenom'];
$votremail=$_POST['votremail']; 
$from=htmlspecialchars('From: '.$par.' '.$votreprenom.' '.$votrenom.' '.$votremail.'\r\n'); 
$message=stripslashes(htmlspecialchars($_POST['message']));
 

$destinataire="xxx@club-internet.fr";
 
$objet=$_POST['objet'];
 

if(!preg_match($verif,$votremail))
{
        echo "Votre e-mail n'est pas valide";
}
 
elseif (trim($message)=="")
{
        echo "Veuillez saisir votre message";
		
}

elseif (trim($objet)=="")
{
        echo "Veuillez spécifier l'objet du message";
}

else
{
        mail($destinataire,$objet,$message,$from);
        echo "<p>Votre message a été envoyé.<br/> <a href="accueil.html">Cliquez-ici pour retourner à l'accueil<br/></a></p>";
}
 
?>


J'ai toujours la même erreur sous wamp, je pense qu'il y a un problème au niveau de la récupération des input "radio" mais je n'ai pas trouvé d'explication convaincante.Si quelqu'un peut m'expliquer, je le remercie d'avance.
Salut Rand,
Comme le dit si bien Heyoan,

* concaténation des chaînes de caractères. Les lignes suivantes sont incorrectes :

$from=htmlspecialchars( "From: " $par $votreprenom $votrenom .$votremail."\r\n");  

et

echo "<p>Votre message a bien été envoyé, merci.<br><a href="accueil.html">Cliquez ici pour revenir sur la page d'accueil</p></a>" ;

A mon avis il faut que tu revois un peut comment fonctionne echo
quelques liens que j'ai trouvé sur google. (c'est certainement pas les meilleurs... Smiley cligne )
sur phpsources
http://www.yatooweb.com/creation-site/php/c16-echo.html
et certainement d'autre sur google:
http://www.google.com

Certainement aussi faudrait-il que tu cherche un peu sur la concaténation... comme ce que t'as conseillé Heyoan...

Bon courage pour la recherche Smiley cligne
Modifié par Dim (27 Jul 2008 - 15:36)
Salut,

tu n'es plus très loin mais il reste toujours ce problème d'imbrications des quotes et des guillemets. Tu pourrais déjà regarder ce post.

Sinon, en reprenant un peu ton code j'arrive à ça :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<title>Test email</title>
	<style type="text/css" media="screen,projection"><!--
		/* Contenu du bloc CSS */
.alert {
	color: red;
	font-weight: bold;
}
	--></style>
</head>
<body>
<?php
$par = !empty($_POST['par']) ? stripslashes(htmlspecialchars($_POST['par'])) : '';
$prenom = !empty($_POST['prenom']) ? stripslashes(htmlspecialchars($_POST['prenom'])) : '';
$nom = !empty($_POST['nom']) ? stripslashes(htmlspecialchars($_POST['nom'])) : '';
$email = !empty($_POST['email']) ? stripslashes(htmlspecialchars($_POST['email'])) : '';
$message = !empty($_POST['message']) ? stripslashes(htmlspecialchars($_POST['message'])) : '';
$objet = !empty($_POST['objet']) ? stripslashes(htmlspecialchars($_POST['objet'])) : '';

if (!empty($_POST)) { // Si le formulaire a été soumis
	$verif='!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!';
	$headers = 'From: '.$par.' '.$prenom.' '.$nom.' <'.$email.'>'."\r\n"; 
	$destinataire="xxx@club-internet.fr";
	if(!preg_match($verif,$email))
	{
			echo "<p class=\"alert\">Votre e-email n'est pas valide !</p>";
	}
	elseif (trim($message)=="")
	{
			echo "<p class=\"alert\">Veuillez saisir votre message !</p>";
	}
	elseif (trim($objet)=="")
	{
			echo "<p class=\"alert\">Veuillez spécifier l'objet du message !</p>";
	}
	else
	{
			if (@mail($destinataire,$objet,$message,$headers)) {
				echo "<p>Votre message a été envoyé.<br /> <a href=\"accueil.html\">Cliquez-ici pour retourner à l'accueil<br /></a></p>";
			} else {
				echo "<p>Une erreur est survenue lors de l'envoi du message.</p>";
			
			}
	}
}
?>
<form method="post" action="mail.php">
		<table>
			<tr><td>
					<div id="radio">
						<ul>
							<li>
								<label for="civilitemme">Madame </label>
								<input name="par" value="Madame" id="civilitemme" type="radio" <?php if($par == 'Madame') echo 'checked="checked"'; ?> />
							</li>
							<li>
								<label for="civilitemlle">Mademoiselle </label>
								<input name="par" value="Mademoiselle" id="civilitemlle" type="radio" <?php if($par == 'Mademoiselle') echo 'checked="checked"'; ?> />
							</li>
							<li>
								<label for="civilitemr">Monsieur </label>
								<input name="par" value="Monsieur" id="civilitemr" type="radio" <?php if($par == 'Monsieur') echo 'checked="checked"'; ?> />
							</li>
						</ul>
					</div>	
			</td></tr>
			<tr><td><label for="nom">Nom : </label>
					<input type="text" id="nom" name="nom" class="champ" value="<?php echo $nom; ?>" />
			</td></tr>
			<tr><td><label for="prenom">Pr&eacute;nom : </label>
					<input type="text" id="prenom" name="prenom" class="champ" value="<?php echo $prenom; ?>" />
			</td></tr>
			<tr><td><label for="email"><b>E-email *</b> : </label>
					<input name="email" id="email" type="text" class="champ" value="<?php echo $email; ?>" />
			</td></tr>
			<tr><td><label for="objet"><b>Objet *</b> : </label>
					<input type="text" id="objet" name="objet" class="champ" value="<?php echo $objet; ?>" />
			</td></tr>
			<tr><td colspan="2"><label for="message"><b>Message *</b> : </label>
							<textarea name="message" cols="47" rows="4" id="message"><?php echo $message; ?></textarea>
			</td></tr>
	</table>
				<p> </p>
				<input type="submit" value="Envoyer" /> <input type="reset" value="Annuler" />
				<p>
					<b>* Champs obligatoires.</b>
				</p>
</form>
</body>
</html>
A voir :
* la fonction mail.
* l'opérateur ternaire.
* Comment faire un site respectueux des Standards.

A+
Merci pour tes explications et ta patience Smiley cligne .Je me rend compte que j'avais pas vraiment compris l'histoire des guillemets.Par contre y'a t-il un avantage particulier à mettre le php et le html dans une seule et même page ?
Modifié par Rand (27 Jul 2008 - 20:42)
Rand a écrit :
Par contre y'a t-il un avantage particulier à mettre le php et le html dans une seule et même page ?
Et bien je trouve que ça simplifie la récupération des variables et le réaffichage en cas d'erreur. Ce sujet en parle également.
Modérateur
Salut,

À propos de l'opérateur ternaire, j'ai vu que l'execution était moins rapide qu'une conditionnelle. Est ce qu'il y a une vrai une incidence à court terme et moyen terme ?

++
Salut,

Nolem a écrit :
À propos de l'opérateur ternaire, j'ai vu que l'execution était moins rapide qu'une conditionnelle.
On parle ici de différences de quelques microsecondes et donc vraiment négligeables. Pour ce qui est de l'optimisation, voir ce sujet et notamment les réponses de Thomas.

A+
Salut.
Une question qui n'a pas grand chose à voir avec le sujet de départ: quelqu'un pourrait-il me conseiller un bon bouquin sur le php ?
Merci.
Modérateur
Merci Heyoan pour ce petit sujet intéressant.

Rand : Je peux te conseiller PHP 5 avancé. Très bon livre ! Sinon, tu as PHP5 et MySql5. Également, essaie de te procurer ce livre (must) en occasion.

Sur le net fourmille plein de site avec de bons tuto :
* site du zéro
* php débutant
* apprendre php
* ici sur Alsa
* etc. (cf. glouglou.fr)

<<<EDIT
* Rand : tu peux avoir également un avis ici

* Heyoan : La mise en cache des images, css, etc. se passe avec ob_start() ?
EDIT;
Modifié par Nolem (28 Jul 2008 - 21:53)
Pages :