batoule80
Messages postés8Date d'inscriptionjeudi 14 août 2008StatutMembreDernière intervention17 août 2008
-
14 août 2008 à 17:57
batoule80
Messages postés8Date d'inscriptionjeudi 14 août 2008StatutMembreDernière intervention17 août 2008
-
16 août 2008 à 11:57
Bonjour,
j'ai beau cherché sur les forum une solution à mon problème , mais en vain
voici mon code :
<?php
// Inclut le fichier de fonctions pour cette application.
require_once('fonctions.php');
// création des variables aux noms abrégés
$nom = isset($_POST[ 'nom' ]) ? $_POST[ 'nom' ] : '';
$prénom = isset($_POST['prénom']) ? $_POST['prénom'] : '';
$email = isset($_POST[ 'email']) ? $_POST[ 'email'] : '';
$login = isset($_POST[ 'login']) ?$_POST[ 'login'] : '';
$passwd = isset($_POST[ 'passwd']) ?$_POST[ 'passwd'] : '';
$passwd2 = isset($_POST[ 'passwd2']) ? $_POST[ 'passwd2'] : '';
$num_téléphone = isset($_POST[ 'num_téléphone'])? $_POST[ 'num_téléphone' ]: '';
$num_portable = isset($_POST[ 'num_portable' ])? $_POST[ 'num_portable' ]: '';
$poste_interne = isset($_POST[ 'poste_interne'])? $_POST[ 'poste_interne' ]: '';
$fax = isset($_POST[ 'fax' ])? $_POST[ 'fax' ]: '';
$adresse = isset($_POST[ 'adresse']) ? $_POST[ 'adresse' ]: '';
$division =isset($_POST[ 'division']) ? $_POST[ 'division' ]: '';
$profession =isset($_POST[ 'profession']) ? $_POST[ 'profession' ]: '';
$loginAttempts =isset($_POST[ 'loginAttempts']) ? $_POST[ 'loginAttempts' ]: '';
// Démarrage d'une session dont nous aurons besoin plus tard.
session_start();
// Vérifie les formulaires remplis.
if((isset($_POST["apply"]))||(isset($_POST["save"])))
{
$verif=true;
// connexion à la base
$result = db_connect();
if (!$result)
die(mysql_error());
// selection de la base de données
$select = @mysql_select_db($dbName,$result);
if (!$select)
die(mysql_error());
$res=mysql_query("select * from hd_utilisateur where username='$login'");
$num=mysql_num_rows($res);
if (!$num)
die(mysql_error());
if (!filled_out($HTTP_POST_VARS))
{
$verif=false;
echo ('<font color="red">Attention, veuillez remplir tout les champs </font>');
//on recharge la page :le meme formulaire : appliquer cette instruction ailleurs
header("Location:add_user.php") ;
}
// L'adresse e-mail n'est pas valide.
elseif (!valid_email($email))
{
$verif=false;
echo ('Entrez une adresse e-mail valide!!');
header("Location:add_user.php") ;
}
elseif($num >=1)
{
$verif=false;
echo "Désolé, ce login existe déja choisir un autre login S.V.P ";
}
//Les mots de passe ne sont pas identiques.
elseif ($passwd != $passwd2)
{
$verif=false;
echo ('Les mots de passes ne correspondent pas');
header("Location:add_user.php") ;
}
// Vérifie lalongueur du mot de passe.
//elseif ((strlen($passwd)<6 || (strlen($passwd) >16))
//{
// $verif=false;
//echo ('Votre mot de passe doit être compris entre 6 et 16 caractères');
// header("Location:add_user.php") ;
//}
// Vérifie si la longueur du nom d'utilisateur est ok.
elseif (strlen($login)>16)
{
$verif=false;
echo ('Votre nom d\'utilisateur doit etre inférieur à 16 caractères');
//exit;
}
elseif (!ereg ("[a-zA-Z]", $nom, $regs) or ereg ("[0-9]", $nom, $regs))
{
$verif=false;
echo "Format de nom invalide : $nom";
}
elseif (!ereg ("[a-zA-Zéè'à]", $prenom, $regs) or ereg ("[0-9]", $prenom, $regs))
{
$verif=false;
echo "Format de prenom invalide : $prenom";
}
elseif (!ereg ("[0-9/-:+-]", $num_téléphone, $regs) or ereg ("[a-zA-Z]", $num_téléphone, $regs))
{
$verif=false;
echo "Format de telephone invalide : $num_téléphone";
}
elseif (!ereg ("[0-9/-:+-]", $num_portable, $regs) or ereg ("[a-zA-Z]", $num_portable, $regs))
{
$verif=false;
echo "Format de telephone invalide : $num_portable";
}
elseif (!ereg ("[0-9/-:+-]", $poste_interne, $regs) or ereg ("[a-zA-Z]", $poste_interne, $regs))
{
$verif=false;
echo "Format de telephone invalide : $poste_interne";
}
elseif (!ereg ("[0-9/-:+-]", $fax, $regs) or ereg ("[a-zA-Z]", $fax, $regs))
{
$verif=false;
echo "Format de fax invalide : $fax";
}
elseif(strlen($adresse)>255)
{
$verif=false;
echo "Format d'adresse invalide : elle a dépassé 255 caractères";
}
//Aucun champ n'est vide, on peut enregistrer dans la table
else
{
if($verif)
{
// connexion à la base
$result = db_connect();
if (!$result)
die(mysql_error());
// selection de la base de données
$select = @mysql_select_db($dbName,$result);
if (!$select)
die(mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO hd_utilisateur (nom, prenom,email, username, passwd,telephone,user_mobile,poste_interne,fax,adresse,division,profession) VALUES('$nom','$prénom','$email','$login','$passwd','$num_téléphone','$num_portable','$poste_interne','$fax ', '$adresse ','$division','$profession ')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !');
mysql_close();
// on affiche le résultat pour le visiteur
echo 'Vos données ont été ajoutées.';
} }
}
// Tente d'enregistrer l'uitilsateur.
// Cette fonction peut également lever une exception.
//register($login, $email, $passwd);
// Enregistre la variable de session.
// $_SESSION['valid_user'] = $login;
//if username or password is blank, send to errorlogin.html
//if ((!$username) || (!$password))
//{
// header("Location:erreur.php");
// exit;
//}
// {
/*function to check the length of the requested password
function password_check($min_pass, $max_pass, $pass)
{
$valid = "yes";
if ($min_pass > strlen($pass) || $max_pass < strlen($pass))
{
$valid = "no";
}
return $valid;
} */
?>
et le fichier fonctions.php :
<?php
//require_once("db_connect.php");
/*
-------------------------------------------------------------------------------------
*Fonction qui établit la connexion à la base de données MySQL
-----------------------------------------------------------------------------------------
*/
Function db_connect()
{
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
$dbName = "db_helpdesk";
$result = @mysql_connect($dbHost, $dbUser, $dbPass) ;
$select= @mysql_select_db($dbName,$result);
if (!$select)
die (mysql_error());
if (!$result)
die(mysql_error());
else
return $result;
}
// ALL PATHS BELOW ARE RELATIVE TO THE DIRECTORY WHERE YOU HAVE INSTALLED vAuthenticate
//$resultpage = "login1.php"; // THIS IS THE PAGE THAT WOULD CHECK FOR AUTHENTICITY
//$admin = "administrateur/accueil.php"; // THIS IS THE PATH TO THE ADMIN INTERFACE
//$success = "administrateur/index.php"; // THIS IS THE PAGE TO BE SHOWN IF USER IS AUTHENTICATED
//$failure = "erreur.php"; // THIS IS THE PAGE TO BE SHOWN IF USERNAME-PASSWORD COMBINATION DOES NOT MATCH
/*
-------------------------------------------------------------------------------------
*Fonction qui vérifie que le formulaire a bien été rempli
-----------------------------------------------------------------------------------------
*/
function filled_out($form_vars)
{
// Teste si chaque variable contient une valeur.
foreach ($form_vars as $key => $value)
{
if (!isset($key)||($value == ''))
return false;
}
return true;
}
/*
-------------------------------------------------------------------------------------
*Fonction qui vérifie que l'adresse e-mail est valide
-----------------------------------------------------------------------------------------
*/
function valid_email($address)
{
// Vérifie que l'adresse e-mail est valide.
if (ereg('^[a-zA-Z0-9 \._\-]+@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]+$', $address))
return true;
else
return false;
}
/*
-------------------------------------------------------------------------------------
*Fonction login() - vérifie les informations d'ouverture de session d'un utilisateur
-----------------------------------------------------------------------------------------
*/
Function login($login, $password)
// Vérifie le nom de l'utilisateur et son mot de passe avec
// la base de données.
// Si c'est bon, on retourne le type d'ouverture de session.
// Sinon on retourne false.
{
// Connexion à la base de données.
$conn = db_uconnect();
if (!conn){
echo"Echec de la connexion ";
return 0;
}
$query = "select username from hd_utilisateur
where username = '$login'
and passwd = sha1('$password')";
$result = mysql_query($query);
if(!$result){
echo"Impossible d'éxécuter la requète, réessayez plus tard";
return false;
}
if (mysql_num_rows($result)<1)
return false;
$row = $result->fetch_array();
if ($row[0] =='admin')
{
return 'admin';
header("location:accueil.php");
}
else
{
return 'normal';
header("location:index1.php");
}
}
function Login_User(){
//global $_SESSION;
global $username, $password, $submit;
if(isset($_POST['submit']))
{
$login = $_POST['login'];
$password = $_POST['passwd'];
if(!filled_out($_POST))
{
echo"Vous n'avez pas remplis tous les champs";
include("../index.php");
exit;
}
if(login($login, $passwd))
{
$_SESSION['valid_user'] = $username;
if ($row[0] =='admin')
{
return 'admin';
header("location:accueil.php");
}
else
{
return 'normal';
header("location:index1.php");
}
exit;
}
else
{
echo"Le nom et le mot de passe sont incorrects";
include("../index.php");
exit;
}
}
else
include("../index.php");
}
?>
le fichier create.php qui permet de créer ma base et mes tables :
<?php
//include("../connect.php");
$link = "CREATE DATABASE db_helpdesk";
$res = mysql_query($link) or die(mysql_error());
mysql_select_db("db_helpdesk");
$link = "
CREATE TABLE `hd_utilisateur` (
`id_user` int(11) NOT NULL auto_increment PRIMARY KEY,
`nom` text NOT NULL,
`prenom` text NOT NULL,
`email` varchar(255) NOT NULL default '',
`username` varchar(16) NOT NULL,
`passwd` varchar(50) NOT NULL default '',
`telephone` varchar(50) NOT NULL default '',
`user_mobile` varchar(50) NOT NULL default '',
`poste_interne` varchar(50) NOT NULL default '',
`fax` varchar(50) NOT NULL default '',
`adresse` varchar(200) NOT NULL default '',
`profession` text NOT NULL,
`fk_division` int(11),
`user_type` text NOT NULL
) AUTO_INCREMENT=1;" ;
$res = mysql_query($link) or die(mysql_error());
$link = "
CREATE TABLE `hd_division` (
`id_division` int(11) NOT NULL auto_increment PRIMARY KEY,
`division` text NOT NULL,
`fk_centre_cout` int(11)
) AUTO_INCREMENT=1;";
$res = mysql_query($link) or die(mysql_error());
$link = "
CREATE TABLE `hd_centre_cout` (
`id_centre_cout` int(11) NOT NULL auto_increment PRIMARY KEY
) AUTO_INCREMENT=1;";
$res = mysql_query($link) or die(mysql_error());
$link = "
CREATE TABLE `hd_incident` (
`id_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
`fk_type_incident` varchar(200) NOT NULL default '',
`fk_sous_type_incident` varchar(200) NOT NULL default '',
`fk_statut` int(11),
`fk_user` int(11),
`Date_creation` date,
`Date_échéance` date ,
`Date_fermeture` date ,
`objet` varchar(200) NOT NULL default '',
`message` varchar(200) NOT NULL
)AUTO_INCREMENT=1;";
$res = mysql_query($link) or die(mysql_error());
$link = "
CREATE TABLE `hd_statut` (
`id_statut` int(11) NOT NULL auto_increment PRIMARY KEY,
`nom_statut` text NOT NULL,
`description` text NOT NULL
)AUTO_INCREMENT=1;";
$res = mysql_query($link) or die(mysql_error());
$link = "
CREATE TABLE `hd_type_incident` (
`id_type_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
`description` text NOT NULL,
`fk_user` int(11)
)AUTO_INCREMENT=1;";
$res = mysql_query($link) or die(mysql_error());
$link = "
CREATE TABLE `hd_sous_type_incident` (
`id_sous_type_incident` int(11) NOT NULL auto_increment PRIMARY KEY,
`description` text NOT NULL,
`fk_type_incident` int(11),
`fk_user` int(11)
)AUTO_INCREMENT=1;";
$res = mysql_query($link) or die(mysql_error());
if ($res)
die("<p>Base de données créee avec succés . SVP supprimez ce fichier pour des raisons de sécurité .</p>");
?>
une question qui m'intrigue concernant les clés étrangères , pourai-je ajouter le type innodb dans le fichier create.php pour bien les gérer ? si oui au niveau de quelles tables ? est_ce celles contenant les clés étrangères ? et comment l'ajouter ?
désolée si vous trouvez mon code pas trés propre " je suis novice"
merci pour tous ceux qui prondront le temps pour lire mon message et de me dire où j'ai commis des erreurs
batoule80
Messages postés8Date d'inscriptionjeudi 14 août 2008StatutMembreDernière intervention17 août 2008 16 août 2008 à 02:11
salut,
j'ai pu réglé le problème , j'ai désinstallé wamp et je suis passée à easyphp "problème de configuration" concernant l'affichage des erreurs
voici le nouveau message d'erreur :
Notice: Undefined variable: dbName in c:\program files\easyphp1-8\www\help desk\administrateur\add_user.php on line 50
No database selected
en effet dans ma fonction :
Function db_connect()
{
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
global $dbHost,$dbUser, $dbPass,$dbName; $dbName = "db_helpdesk";
$result = mysql_connect($dbHost, $dbUser, $dbPass) ;
if (!$result)
die(mysql_error());
$select= mysql_select_db($dbName,$result);
if (!$select)
die (mysql_error());
else
return $result;
}
les variables déclarées dans cette fonction ne sont accéssible qu'à l'intérieur de cette meme fonction alors il suffisait d'ajouter la ligne suivante pour y accéder depuis n'importe quel fichier :
deja essaie de ne JAMAIS mélanger dans un meme fichier du php avec du html c'est vraiment la pire des erreurs a faire, utilises du templating (il en existe pleins, genre smarty)
2: Rend le code plus propre en programmant en objet, et en creant des classes, ca evite souvent de passer par des variables globales.
A la vu de ton code tu dois bien te prendre la tete a debugguer ;-)
bon courage
batoule80
Messages postés8Date d'inscriptionjeudi 14 août 2008StatutMembreDernière intervention17 août 2008 16 août 2008 à 11:57
bonjour,
en effet, ma manière de cofidier est loin d'etre propre vue que je suis novice en programmation php/mysql , mais je vais m'améliorer dans les projets à venir " c'est juste une question de temps et de volonté surtout" .
pour le moment je me contenterai de la programmation procédurale , la programmation objet offre beaucoup d'avantages tel que la réutilisation du code ... mais pour le moment je ne la maitrise pas vraiment .
merci texouille d'avoir pris un peu de temps pour me donner ces conseils que sans doute je vais les prendre en considération prochainement
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.