Comment passer une valeur prédéfinie d'un formulaire

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 : Comment passer une valeur prédéfinie d'un formulaire

Tout est OK

par Shmi » 07 juin 2006, 19:45

Encore moi Ryle,

Ben voilà, tout fonctionne. Après avoir enlevé mes commentaires avant de t'envoyer la fonction, tout s'est réglé. J'avais une saleté dans les commentaires probablement. :oops:

Du HTML mêlé à du PHP, on en vient à ne plus savoir comment appliquer les commentaires.

Merci tout de même. Je prends une bière à ta santé.

Shmi

par Invité » 07 juin 2006, 19:30

J'ai oublié le début de la fonction...
function print_register_form($edit, $data = array(), $types, $newcode, $msg = '') {
	global $conf;
	$positions    = $conf['ui']['positions'];		// Postions that are availble in the pull down menu
	$institutions = $conf['ui']['institutions'];	// Institutions that are available in the pull down menu 
	$use_logonname = (bool)$conf['app']['useLogonName'];	// If we are using logon name or email for authentication
	
	echo "Use = (".$use_logonname.")<br>";
		
	// Print header
	echo '<h3 align="center">' . (($edit) ? translate('Please edit your profile') : translate('Please register')) . '</h3>' . "\n";

	if (!empty($msg))
		CmnFns::do_error_box($msg, '', false);
		
?>
Shmi

par Shmi » 07 juin 2006, 19:22

Bon, alors je me lance...

Voici la fonction qui affiche la boite d'identification pour l'utilisateur :
<form name="register" method="post" action="<?= $_SERVER['PHP_SELF'] . '?' . ($edit ? 'edit=' . $edit : '')?>">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
  <td bgcolor="#333333">
	<table width="100%" border="0" cellspacing="1" cellpadding="2">
	  <tr bgcolor="#FFFFFF">
		<td width="250" class="formNames">
		  <p align="right"><?=translate('User Code')?></p>
		</td>
		<td colspan="3">
			<input type="text" name="logon_name" class="textbox" value="<?=isset($data['logon_name']) ? $data['logon_name'] : $newcode; ?>" readonly="true"/>
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td width="250" class="formNames">
		  <p align="right">* <?=translate('Email address')?></p>
		</td>
		<td colspan="3">
		  <input type="text" name="emailaddress" class="textbox" value="<?=isset($data['emailaddress']) ? $data['emailaddress'] : ''; ?>" maxlength="75" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right">* <?=translate('Last Name')?></p>
		</td>
		<td>
		  <input type="text" name="lname" class="textbox" value="<?=isset($data['lname']) ? $data['lname'] : ''; ?>" maxlength="50" />
		</td>
		<td class="formNames">
		  <p align="right">* <?=translate('First Name')?></p>
		</td>
		<td>
		  <input type="text" name="fname" class="textbox" value="<?=isset($data['fname']) ? $data['fname'] : ''; ?>" maxlength="50" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right">* <?=translate('Phone')?></p>
		</td>
		<td>
		  <input type="text" name="phone" class="textbox" value="<?=isset($data['phone']) ? $data['phone'] : ''; ?>" size="15" />
		</td>
		<td class="formNames">
		  <p align="right"><?=translate('Fax')?></p>
		</td>
		<td>
		  <input type="text" name="fax" class="textbox" value="<?=isset($data['fax']) ? $data['fax'] : ''; ?>" size="15" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right">* <?=translate('Address')?></p>
		</td>
		<td>
		  <input type="text" name="laddress" class="textbox" value="<?=isset($data['laddress']) ? $data['laddress'] : ''; ?>" size="45" />
		</td>
		<td class="formNames"><p align="right">* <?=translate('Schedule City')?></td></p>
		<td>
		  <input type="text" name="city" class="textbox" value="<?=isset($data['city']) ? $data['city'] : ''; ?>" size="30" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right">* <?=translate('Schedule CodePost')?></p>
		</td>
		<td colspan="3">
		  <input type="text" name="lcodepost" class="textbox" value="<?=isset($data['lcodepost']) ? $data['lcodepost'] : ''?>" size="7" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames">
		  <p align="right"><?=translate('Institution')?></p>
		</td>
		<td>
		  <?
		  if (empty($institutions[0])) {
			echo '<input type="text" name="institution" class="textbox" value="' . (isset($data['institution']) ? $data['institution'] : '') . '" maxlength="255" />' . "\n";
		  }
		  else {
		  ?>
		  <select name="institution" class="textbox">
		  <?			  
			  // Print out position options
			  for ($i = 0; $i < count($institutions); $i++) {
				echo '<option value="' . $institutions[$i] . '"'
					. ( (isset($data['institution']) && ($data['institution'] == $institutions[$i])) ? ' selected="selected"' : '' )
					. '>' . $institutions[$i] . '</option>' . "\n";
			  }
		  ?>
		  </select>
		  <?
		  }
		  ?>
		</td>
		<td class="formNames">
		  <p align="right"><?=translate('Position')?></p>
		</td>
		<td>
		  <?
		  if (empty($positions[0])) {
			echo '<input type="text" name="position" class="textbox" value="' . (isset($data['position']) ? $data['position'] : '') . '" maxlength="100" />' . "\n";
		  }
		  else {
		  ?>
		  <select name="position" class="textbox">
		  <?			  
			  // Print out position options
			  for ($i = 0; $i < count($positions); $i++) {
				echo '<option value="' . $positions[$i] . '"'
					. ( (isset($data['position']) && ($data['position'] == $positions[$i])) ? ' selected="selected"' : '' )
					. '>' . $positions[$i] . '</option>' . "\n";
			  }
		  ?>
		  </select>
		  <?
		  }
		  ?>
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td class="formNames"><p align="right"><?=translate('User Type')?></td></p>
		<td class="cellColor" colspan="3">
			<select name="typeloginid" class="textbox">
				<?
				if (empty($types))
					echo '<option value="">Ajouter une catégorie</option>';
				else {
					for ($i = 0; $i < count($types); $i++)
						echo '<option value="' . $types[$i]['typeloginid'] . '"' . (isset($data['typeloginid']) && $types[$i]['typeloginid'] == $data['typeloginid'] ? ' selected="selected"' : '') . '>' . $types[$i]['typeloginame'] . "</option>\n";
				}
				?>
			</select>
			</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td  class="formNames">
		  <p align="right">* <?=translate('Password (6 char min)', array($conf['app']['minPasswordLength']))?></p>
		</td>
		<td colspan="3">
		  <input type="password" name="password" class="textbox" />
		</td>
	  </tr>
	  <tr bgcolor="#FFFFFF">
		<td  class="formNames">
		  <p align="right">* <?=translate('Re-Enter Password')?></p>
		</td>
		<td colspan="3">
		  <input type="password" name="password2" class="textbox" />
		</td>
	  </tr>
	  <? if (!$edit) { ?>
	  <tr bgcolor="#FFFFFF">
		<td  class="formNames">
		  <p align="right"><?=translate('Keep me logged in')?></p>
		</td>
		<td colspan="3">
		  <input type="checkbox" name="setCookie" value="true" />
		</td>
	  </tr>
	  <? } ?>
	</table>
  </td>
</tr>
</table>
<h6>
* = Indique que le champ est obligatoire<br>
Le code d'utilisateur vous est attribué de façon automatique
</h6>
<? if ($edit) { ?>
	<input type="submit" name="update" value="<?=translate('Edit Profile')?>" class="button" />
	<input type="button" name="cancel" value="<?=translate('Cancel')?>" class="button" onclick="javascript: document.location='ctrlpnl.php';" />
<? } else { ?>
	<input type="submit" name="register" value="<?=translate('Register')?>" class="button" />
	<input type="button" name="cancel" value="<?=translate('Cancel')?>" class="button" onclick="javascript: document.location='index.php';" />
<? } ?>
</form>
<?
}
Voici maintenant ce que m'affiche le print_r(_$POST), tel que tu me le recommande :

Array ( [emailaddress] => [email protected] [lname] => Bolduc [fname] => AA [phone] => 7777 [fax] => 777 [laddress] => 100, rue des Brioches [city] => L'Assomption [lcodepost] => J6Y 5T4 [institution] => [position] => [typeloginid] => rs1443eaf99520ce [password] => sirius [password2] => sirius [register] => Enregistrer )

Merci. C'est franchement très gentil de m'aider. Il y a plusieurs jours que je suis sur ce problème.

Shmi

par Ryle » 07 juin 2006, 17:48

Ben là tout de suite, à froid, je vois pas trop non.. ton champ logon_name n'est pas placé en dehors des balises <form> ? (il ne serait du coup pas envoyé non plus lors du submit)

A la limite, fais nous voir tout le formulaire :)

et au lieu du echo, montre nous le résultat d'un print_r($_POST) (ou de $_GET selon la façon dont tu envois les données) pour voir les données que tu récupères une fois le formulaire envoyé :)

par Shmi » 07 juin 2006, 17:37

Merci pour l'information. Pourtant, ça ne fonctionne toujours pas. D'ailleurs, j'ai quelques lignes plus bas le nom de l'utilisateur ...

<input type="text" name="lname" class="textbox" value="<?=isset($data['lname']) ? $data['lname'] : ''; ?>" maxlength="50" />

.... et lorsque je vais un «echo» pour visualiser le contenu de mes variables (logon_name et lname), le nom s'affiche très bien mais pas le code d'utilisateur.

Je suis déspérée. :cry:

As-tu une autre idée Ryle ?

Shmi

par Ryle » 07 juin 2006, 17:16

Tu oublis... que les champs disabled ne sont pas envoyés par le formulaire :)

Utilises plutot readonly="true" pour empêcher la modification du texte, et transmettre le champ malgré tout :)

Comment passer une valeur prédéfinie d'un formulaire

par Shmi » 07 juin 2006, 17:13

Allo tout le monde,

Je veux pouvoir décider du code d'utilisateur de mon appli. J'affiche ce code dans la case du formulaire en plus de lui mettre l'attribut «disabled» pour qu'on ne puisse le modifier. Malheureusement, la valeur n'est pas passé lors du «submit». Qu'est-ce que j'oublie ?

Voici ma ligne de code (PHP et HTML) :
<input type="text" name="logon_name" class="textbox" value="<?=isset($data['logon_name']) ? $data['logon_name'] : $newcode; ?>" disabled="true"/>

Merci

Shmi