Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/04/2011, 13h37   #1
Membre régulier
 
Avatar de la_chouette
 
Inscription : avril 2010
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 114
Points : 76
Points : 76
Par défaut Déterminer le répertoire Web d'un hébergement

Bonjour,

je cherche à tester à distance des identifiants MySql envoyés préalablement via un formulaire PHP.

Pour ce faire j'ai penser à créer un fichier PHP contenant un test de connexion SQL et de parser le résultat ensuite.

Mon problème est de déterminer le répertoire Web d'un hébergement ...

Voici un exemple de code plus parlant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
if($_POST) 
{	
	if($_POST['answer'] != '7'){
		$ErrAnswer = '<span class="error">Erreur question anti-spam</span><br />';
		$Err = true;
		}
	if(!$_POST['email'] || !preg_match("/^[^\s]+@[^\s]+\.[^\s]+$/", $_POST['email'])){
		$ErrEmailDns = '<span class="error">Adresse email incorrect.</span><br />';
		$Err = true;
		}
 
	if(!$_POST['domain'] || !preg_match('/^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}/',$_POST['domain']) || !checkdnsrr($_POST['domain'])){
		$ErrEmailDns .= '<span class="error">Nom de domaine incorrect.</span><br />';
		$Err = true;
		}
 
	if(!$_POST['ftp_host'] || !$_POST['ftp_user'] || !$_POST['ftp_pass']){
		$ErrFtp = '<span class="error">Veuillez renseigner les informations FTP.</span><br />';
		$Err = true;
	}
	else
	{
		# Connect to Ftp
		$conn_id = ftp_connect($_POST['ftp_host']);
		$login_result = ftp_login($conn_id, $_POST['ftp_user'], $_POST['ftp_pass']);
 
		if ((!$conn_id) || (!$login_result)) {
			$ErrFtp = '<span class="error">Information FTP érronée ! Vérifiez vos identifiants.</span><br />';
			$Err = true;
		}
		else
		{			
			if(!$_POST['db_host'] || !$_POST['db_user'] || !$_POST['db_pass'] || !$_POST['db_name']){
				$ErrDb = '<span class="error">Veuillez renseigner les informations de la base de données MySq.</span><br />';
				$Err = true;
			}
			else
			{
				# Create file test Db
				$rep = "test/";
				$file = 'somefile.php';
				$handle = fopen($rep.$file,"w+");	
				if ($handle) {
					fwrite($handle, '<?php'."\r\n");
					fwrite($handle, '$link=mysql_connect("'.$_POST['db_host'].'", "'.$_POST['db_user'].'", "'.$_POST['db_pass'].'");'."\r\n");
					fwrite($handle, 'if (!$link) echo "Not connected";'."\r\n");	
					fwrite($handle, 'else{'."\r\n");
					fwrite($handle, '$db_selected=mysql_select_db("'.$_POST['db_name'].'", $link);'."\r\n");
					fwrite($handle, 'if (!$db_selected) echo "Not selected";'."\r\n");
					fwrite($handle, '}'."\r\n");
					fwrite($handle, 'mysql_close($link);'."\r\n");
					fwrite($handle, '?>'."\r\n");
					fclose($handle);
				}
 
				# Transfert file test Db to Ftp
				ftp_put($conn_id, $file, $rep.$file, FTP_ASCII);
 
				# Close connect Ftp
				ftp_close($conn_id);
 
				# Parse to page test Db
				$homepage = file_get_contents('http://'.str_replace('ftp.','',$_POST['ftp_host']).'/'.$file);
 
				# Check result
				if(preg_match('/Not connected/',$homepage)) {
					$ErrDb = '<span class="error">Votre identifiants, mot de passe, nom de hôte indiqué(s) sont incorrects.</span><br />';
					$Err = true;
				}
				if(preg_match('/Not selected/',$homepage)) {
					$ErrDb .= '<span class="error">Le nom de la base de données est incorrect.</span><br />';
					$Err = true;
				}	
			}
		}
	}
}
Merci pour votre aide

Cordialement
__________________
La vitesse de la lumière étant supérieure à celle du son, beaucoup de gens sont brillants jusqu'à ce qu'ils ouvrent leur bouche.
la_chouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 13h53   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Salut

Premier point: PHP fait nativement la validation d'email, pas besoin de regexp, voir filter_var. Idem pour les autres sanity check que tu fais

Deuxième point: le fait d'utiliser ou de comparer des index de $_POST (ou de n'importe quel tableau d'ailleurs) sans vérifier au préalable leur existence est non seulement un facteur de risque mais surtout ça lance des E_WARNING à tout va.

Si j'ai bien saisi, tu utilise FTP pour poser un fichier généré à la volée qui sert à tester la connection MySQL avec les identifiants provenant d'un formulaire. Il y a 'achement plus simple, pourquoi ne pas mettre sur le serveur un script de test sécurisé qui ressemblerait à:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
$params = array(
  'host' => 'localhost',
  'user' => 'root',
  'password' => 'pwd',
);
 
if (!empty($_REQUEST) {
  $params = array_merge($params, array_intersect_key($_REQUEST, $params));
}
 
extract($params);
if (!mysql_connect($host, $user, $password)) {
   die("MySQL Error : " . mysql_error()); 
}
else {
   die("MySQL is up and running");
}
Tu pourras toujours l'appeler avec des paramètres GET à l'aide d'un simple fopen ou d'un file_get_content (le wrapper HTTP est natif).
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 14h04   #3
Membre régulier
 
Avatar de la_chouette
 
Inscription : avril 2010
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 114
Points : 76
Points : 76
Bonjour et merci pour ta réponse.

Filter_var pour les emails est loin de prendre en compte tout les formats d'emails.

Les var post transmit sont protéger et vérifier en amont... (cas d'école...)

Là n'est pas le souci!!! et ce que tu me propose fait exactement ce que j'ai poster, a savoir générer un fichier contenant des logs sql et parser par la suite...

Ce que je cherche c'est à déterminer le répertoire Web d'un hébergement en PHP et rien d'autre ...

A moins que je n'ai pas saisi ta proposition et je m'en excuse

Merci encore pour ta réponse, cordialement
__________________
La vitesse de la lumière étant supérieure à celle du son, beaucoup de gens sont brillants jusqu'à ce qu'ils ouvrent leur bouche.
la_chouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 14h43   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Ah si c'est que ça tu peux déterminer le doc root avec:
Code :
1
2
 
$docRoot = getenv("DOCUMENT_ROOT");
Mais je comprends toujours pas pourquoi tu vas générer un fichier...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 29/04/2011, 10h46   #5
Membre régulier
 
Avatar de la_chouette
 
Inscription : avril 2010
Messages : 114
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 114
Points : 76
Points : 76
Merci pour ton aide.

Je doit uploder un fichier contenant un test de connexion Sql et le parsé ensuite car bien souvent les bases de données ne sont pas accessibles de l’extérieur mais uniquement à partir de hébergement/serveur.

En faite je sais déterminer le root d'un hébergement mais pas trouver le dossier Web (accessible en public ex: http)...

Sinon j'ai penser rechercher un fichier index.php/html comme le fait apache par défaut ...

Chez ovh c'est "www"
Chez infomaniak c'est "web"
Chez godaddy c'est "public_html"
Chez d'autre c'est directement la racine "/"
__________________
La vitesse de la lumière étant supérieure à celle du son, beaucoup de gens sont brillants jusqu'à ce qu'ils ouvrent leur bouche.
la_chouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h33.


 
 
 
 
Partenaires

Hébergement Web