2010-03-12 6 views
0

J'ai une page qui permet essentiellement à un utilisateur admin de créer des types d'utilisateurs de gestionnaire (essentiellement une fonction de registre.) Quand les valeurs sont soumises, elles sont stockées dans la base de données, très basique. ..raisons sont j'ai 3 niveaux d'utilisateur différents et j'ai déclaré leur identification comme un entier (par exemple 7 = gestionnaire, 8 = utilisateur, etc.)Problème avec PHP; Affichage de la valeur masquée

Quelqu'un peut-il m'aider avec comment passer correctement cette valeur cachée de sorte qu'il magasins dans la base de données ...

Voici ma forme:

<form id="userreg" name="userreg" method="post" action="adduser-process.php"> 
<label>Full Name:</label> <input name="fullname" size="40" id="fullname" value="<?php if (isset($_POST['fullname'])); ?>"/> 
    <br /> 
    <label>Username:</label> <input name="username" size="40" id="username" value="<?php if (isset($_POST['username'])); ?>"/>  <br /> 
    <label>Password:</label> <input name="password" size="40" id="password" value="<?php if (isset($_POST['password'])); ?>"/>  <br /> 
    <label>Email Address:</label> <input name="emailaddress" size="40" id="emailaddress" value="<?php if (isset($_POST['emailaddress'])); ?>"/> 
    <br /> 
    <input name="userlevel" type="hidden" size="1" id="userlevel" value="<?php $_POST[5]; ?>" /> <br /> 
    <input value="Add User" class="addbtn" type="submit" /> 
    </form></div> 

Ne xt, voici le script qui exécute la requête:

<?php 

require_once "config.php"; 


$fullname = $_POST['fullname']; 
$username = $_POST['username']; 
$password = $_POST['password']; 
$emailaddress = $_POST['emailaddress']; 
$userlevel = $_POST[5]; 


$sql = "INSERT INTO users_tb VALUES('".$user_id."','".$fullname."','".$username."',MD5('".$password."'),'".$emailaddress."','".$userlevel."')"; 
$result = mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 

header("Location: administratorfrontview.php"); 
exit(); 
?> 

Je suis fondamentalement essayer de passer le TypeM caché avec une valeur constante de « 5 » juste pour cette forme, car il ne sera pas changé ... aussi bien que je suis ici, pour une raison quelconque, le 'fullname' n'est pas non plus stocké dans la BD !! WTH ?? tous les autres champs sont traités correctement. Toute aide est très appréciée! Je vous remercie.

+4

Vous avez vraiment besoin de lire sur l'injection SQL. Quelqu'un pourrait facilement compromettre votre site Web en fonction de votre code. Google "injection de php sql". – ryeguy

+0

Oui, je sais, je vais utiliser JavaScript pour la validation, mais je suis en train d'éditer localement et d'essayer de faire fonctionner la partie principale en premier. Mais merci quand même. – Yvonne

+4

Je vous aurais défendu contre le commentaire "Lisez sur sql injection avant d'utiliser ce code", jusqu'à ce que vous disiez que vous alliez utiliser javascript pour valider. S'il vous plaît faites comme l'homme dit. – Jage

Répondre

3

Deux choses. Un, $userlevel doit être égal à $_POST['userlevel'] et non 5 car les données POST ne sont pas toujours dans cet ordre. Deuxièmement, votre instruction d'insertion doit être précédée des noms de colonnes (pour éviter que les données ne soient dans le mauvais ordre).

$sql = "INSERT INFO users_tb (id, name, username, password, email, userlevel) ". 
     "('".$user_id."','".$fullname."','".$username."',MD5('".$password."'),'". 
     $emailaddress."','".$userlevel."')"; 
+0

Merci pour cela, j'ai maintenant les données stockées dans les colonnes correctes, mais je n'arrive toujours pas à stocker le niveau d'utilisateur ... J'ai comme la valeur du champ caché, mais c'est juste le stocker comme '0' !? – Yvonne

+0

Eh bien, qu'est-ce qui est POSTé avant cela? Avez-vous une autre page mettant des données POSTing? Sinon, ça va poser problème. venir comme vide. Et si votre champ de base de données est INTEGER et NOT NULL, alors il sera 0 par défaut. Je suggère de trouver autre chose que $ _POST [5] pour passer le niveau utilisateur à la page (stocker dans une variable $ _SESSION). –

2

Votre PHP pour sortir la valeur est faux. Utilisation:

<?= $_POST[5]; ?> 

ou

<?php echo $_POST[5]; ?> 
+0

N'oubliez pas d'activer short_open_tags dans votre php.ini lorsque vous utilisez . – Jage

+0

La valeur de 5 n'est toujours pas stockée dans la base de données. J'utilise celui-ci: Yvonne

Questions connexes