Serveur Linux

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 : Serveur Linux

Re: Serveur Linux

par moogli » 26 oct. 2011, 17:35

par hasard tu n'utiliserais pas l'extension PDO pour faire tes requêtes ?

si oui, le problème est réglé, car tu n'a pas de connexion à mysql avec l'extention mysql mais avec PDO, ce qui n'est pas pareil.

c'est d'ailleur clairement indiqué dans la doc de mysql_real_escape_string
Liste de paramètres

unescaped_string

La chaîne à échapper.
link_identifier

La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.
dans le même esprit essai de te connecter en même temps avec l'extension mysql et mysqli.

pour "protéger" tes données utilise la méthode quote

j'suis sur que l'on peux répondre à me 1ère remarque sur ce sujet :mrgreen:


oui oui je sors très très vite :)

@+

Re: Serveur Linux

par Jibe » 26 oct. 2011, 16:30

require("connect.php");
try
	{
			if (!empty($_POST['log']) && !empty($_POST['mdp'])) 
			{
				$log=mysql_real_escape_string($_POST['log']);
				var_dump($log);
				$mdp=md5($_POST['mdp']);
				
				$rep = $bdd->query("SELECT id, grade FROM user WHERE log='$log'");
				while($don = $rep->fetch())
				{
					$idlog = $don['id'];
					$grade = $don['grade'];
				}
				
				$req = $bdd->query("SELECT id FROM user WHERE mdp='$mdp'");
				while($te = $req->fetch())
				{
					$idmdp = $te['id'];
				}
				
					if(empty($idlog))
					{
						echo "<script>alert(\"".$log." non reconnu! Pour avoir acces a cette application veuillez vous créer un compte\")</script>";						
						include("index.php");
						exit;
					}
					elseif(empty($idmdp))
					{
						echo "<script>alert(\"".$log." votre mot de passe est incorrect!\")</script>";						
						include("index.php");
						exit;
					}
					elseif(!empty($idlog) && !empty($idmdp)) // si le log et le mdp sont les mêmes que ceux de la base
					{
						
						session_start();
						$_SESSION['log']=$log;
						$_SESSION['grade']=$grade;
						//header("Location: php/accueil.php");
					}
				
			}
			else
			{
				echo "<script>alert(\"Vous devez remplir les deux champs!\")</script>";
				include("index.php");
				exit;
			}
	}
	catch(Exception $e)
	{
		// En cas d'erreur précédemment, on affiche un message et on arrête tout
		die('Erreur : '.$e->getMessage());
	}
Voilà le code de ma page de vérif qui donc fonctionne en local mais pas sur serveur...

J'ai fais la comparaison des phpinfo :

Apparaît sur le serveur mais pas en local : bz2, curl, exif, fileinfo, gettext, gmp, openssl, pdo_pgsql, pgsql, radius, shmop, sockets, sqlite3, xmlrpc, xsl
Apparaît en local mais pas sur serveur : com_dotnet, mysqlnd, odbc

Voilà les différences de librairies.

Re: Serveur Linux

par moogli » 26 oct. 2011, 16:15

heu voui, j'ai même pas fait gaffe :/ tu remarquera que j'ai mysql_real_escape_string :/ j'suis pas doué on pouvais se comprendre :d

mysql_escape_string n'a pas besoin de connexion au sgbd pour fonctionner donc c'est 'normal';

tu veux nous indiquer ton code complet histoire d'avoir une vue globale de la chose ? :d

@+

Re: Serveur Linux

par Jibe » 26 oct. 2011, 16:07

Je viens de constater encore autre chose...
J'ai essayé de mettre mysql_escape_string et là ça marche. Mais après avoir regardé brièvement sur le net, à ce que j'ai compris mysql_escape_string est dépassé et a été remplacé par mysql_real_escape_string...

Et pourtant la version serveur de php est 5.3.8 et la version locale est 5.3.5. je comprends vraiment pas :cry:

Re: Serveur Linux

par moogli » 26 oct. 2011, 16:01

Valeurs de retour

Retourne la chaîne échappée, ou FALSE si une erreur survient.
donc heu y a une boulette la !

je te conseil de comparer les phpinfo histoire de voir si ce sont les mêmes versions de php et si les mêmes extensions sont installer.

essai de mettre l'error_reporting à E_ALL | E_STRICT (si php <5 sans le | E_STRICT !)

si retourne false doit y avoir une raison et p'tet une erreur !

@+

Re: Serveur Linux

par Jibe » 26 oct. 2011, 15:50

Par contre je reviens sur un autre problème auquel j'ai demandé conseil dans ce topic. C'est concernant mysql_real_escape_string. J'avais demandé au service informatique que l'on m'installe des librairies pour l'exportation de données Excel et depuis mysql_real_escape_string ne marche plus.

Concernant ce que tu avais dit moogli :
et que donne un var_dump($log); ?
en local ça m'affiche string 'le log' puis sa taille donc pas de problème.
sur serveur ça m'affiche bool(false)...

Re: Serveur Linux

par Jibe » 26 oct. 2011, 15:36

Ah oui ça me paraît encore une meilleur idée que passer par une applet Java. Je pense que je vais suivre cette piste là.
Merci.

Re: Serveur Linux

par moogli » 26 oct. 2011, 11:10

ou alors tu le demande à l'utilisateur ?

si l'utilisateur est "connecté" (via login / mdp) tu peux très bien imaginer de demande à remplir un "profil" dans lequel tu permet l'upload vers le serveur d'un template (ou plusieurs pourquoi pas) que tu pourra associer à l'utilisateur et au moment de lui envoyer les données tu dit : template par défaut ou template perso ?
a partir de la tu charge le bon template et envoie les données choisies ;)

en gros
une table utilisateurs (id, nom, prenom, mot de passe etc etc etc)
une table template (id, iduser, lien template)

tu a un code "générique" qui existe déja, il ne te reste qu'a choisir le bon template.

Bien sur cela oblige l'utilisateur à fournir un template cohérent avec ce que tu utilise (enfin c'est le but d'un template, le fond est le même la forme change).

une simple intéret de ce truc c'est que si quelqu'un veux montre la chose à un collègue depuis un poste qui n'est pas le siens, ça fonctionne.

Par ailleurs s'il y a un changement de PC (raison x ou y) le template n'est pas perdu et l'utilisateur continue de travailler sans problème ;)

C'est mon point vue, il permet de simplifier ton application et une souplesse pour l'utilisateur qui n'aura qu'une seule contrainte : uploder le template sur le serveur (c'est quand même pas la mort ^^)

@+

Re: Serveur Linux

par Jibe » 26 oct. 2011, 10:28

OK, je vais creuser de ce côté là alors.
L'intérêt en fait c'est que les utilisateurs de l'application vont être amenés à exporter des données de la base pour en faire des statistiques. Il y a un template existant dans le répertoire du serveur mais à priori certains utilisateurs auraient leur propre template donc avant d'ouvrir celui du serveur faut faire une vérif pour voir si il en existerait pas un dans un répertoire particulier...

Re: Serveur Linux

par moogli » 25 oct. 2011, 11:03

Merci pour vos réponses et désolé pour ma réponse tardive. Donc en PHP c'est vraiment pas faisable d'adapter la commande if file_exists... ca aurait été tellement plus simple. Mais d'un autre côté je comprends par rapport à la sécurité.
c'est une question de sécurité et de logique le serveur ne connais, a priori, rien de la machine cliente.

après dans un réseau interne d'entreprise tu peux très bien dire que toutes les machines ont un répertorie partagé et que depuis le réseau tu va écrire dessus. rien ne t'en empêche (j'ai fait du support technique pour une grosse banque qui le fait, les "admin" ont accès aux disques de n'importe qu'elle machine pourvu qu'il ai l'ip ou le nom de la machine). La c'est la même chose c'est réalisable si tu le nom de la machine et les bons droits.
Par contre je ne pense pas que cela soit vraiment une solution pérenne.

Après mon "idée" de l'application cliente est simple. lorsque tu lance une application sur ton ordi tu à accès aux disque comme tu le souhaite (pourvu que tu soit administrateur, la encore si la personne ne l'ai elle ne pourra accéder qu'à son répertoire utilisateur, vrai aussi sous windows maintenant avec W7).

Donc, partant de ce constat, si tu créer une application "cliente" qui utilise va "se connecter" sur ton site oueb pour récupérer le fichier généré elle pourra le coller la où tu le souhaite.
Après y a des contraintes technique :
Coté serveur :
- créer une "service web" qui va fournir le fichier excel à l'appli cliente (donc en gros c'est le script que tu a déja, il envoie le fichier en utilisant le protocole http "classique" comme le ferais un navigateur)

Coté client
- une interface simple pour l'utilisateur
- l'application doit être capable de contacter contacter un serveur web avec http et récupérer un fichier par ce protocole (c'est ce que fait un navigateur en fait).
- créer le fichier à l'emplacement voulu.

Perso je me demande l'intérêt d'une telle chose.

est ce que ce fichier excel est vital au système pour qu'il soit placer à un emplacement précis ?
n'est il pas possible de proposer le téléchargement simplement, quitte a indiquer où mettre le fichier ?

@+

Re: Serveur Linux

par Jibe » 25 oct. 2011, 10:18

Salut,

Merci pour vos réponses et désolé pour ma réponse tardive. Donc en PHP c'est vraiment pas faisable d'adapter la commande if file_exists... :cry: ca aurait été tellement plus simple. Mais d'un autre côté je comprends par rapport à la sécurité.

Par contre est-ce que tu pourrais développer un peu plus ton idée moogli stp? Parce qu'apparemment côté client ya moyen de développer quelque chose en java qui fonctionnera mais je voudrai être sur de bien comprendre le principe.

Merci.
++

Re: Serveur Linux

par moogli » 18 oct. 2011, 23:17

ton seul moyen la c'est avoir une application coté client (pas du web un soft, en java, C#, ou quoi se soit d'autre :) ) quitte a ce que ce soft utilise un service web en php qui génère le fichier excel et te le fournit

@+

Re: Serveur Linux

par macgawel » 18 oct. 2011, 16:24

En revanche j'ai une autre question.
(...)
Du coup est-ce que vous savez comment je pourrai faire pour réaliser mon test sur l'application du serveur?
Merci.
Ce n'est pas possible.
En tout cas pas avec PHP.
En tout cas, ce n'est pas normalement possible.

Je te laisse imaginer les possibilités d'exploits/virus/etc que ça engendrerait :priere:

Re: Serveur Linux

par Jibe » 18 oct. 2011, 16:13

Merci pour vos réponses. J'ai pas encore trouvé la faille mais ça va venir.
En revanche j'ai une autre question.

Dans mon application j'exporte des données de la base dans un template excel. Le template en question est dans le repertoire de mon site sauf que il faut quand même que je fasse une vérification pour voir si il en existe pas un sur l'ordinateur du client et ceci sur un chemin bien précis (C:\\gestcomp\\Template_evol_collab.xlsx)
J'ai ce bout de code qui permet de faire la vérification :
$objet = new PHPExcel_Reader_Excel2007();

if(file_exists("C:\\gestcomp\\Template_evol_collab.xlsx")) 
{
	$excel = $objet->load('C:\\gestcomp\\Template_evol_collab.xlsx');
}
else
{
	$excel = $objet->load('Template_evol_collab.xlsx');
}
Ceci marche bien en locale et à priori file_exists ne marche qu'en local. J'ai quand même transféré le script sur le serveur (en ayant un fichier sur C:\\gestcomp\\) et effectivement il ouvre le template du dossier de l'application alors qu'il aurait du ouvrir celui du C. Du coup est-ce que vous savez comment je pourrai faire pour réaliser mon test sur l'application du serveur?
Merci.

Re: Serveur Linux

par moogli » 17 oct. 2011, 17:43

et que donne un var_dump($log); ?

parce que bon la c'est pas clair :)

vérifie aussi ton niveau d'erreur si tu souhaite debugger.

sinon y a PDO :mrgreen:

@+