IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Déterminer le répertoire Web d'un hébergement


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Points : 121
    Points
    121
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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).

  3. #3
    Membre régulier Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    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.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ah si c'est que ça tu peux déterminer le doc root avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $docRoot = getenv("DOCUMENT_ROOT");
    Mais je comprends toujours pas pourquoi tu vas générer un fichier...

  5. #5
    Membre régulier Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    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.

Discussions similaires

  1. [Upload] Images hors du répertoire web
    Par JoceC dans le forum Langage
    Réponses: 2
    Dernier message: 11/04/2008, 20h54
  2. Réponses: 13
    Dernier message: 23/12/2007, 18h22
  3. répertoire "/web-inf/classes" écrasé, que faire ?
    Par 60sman dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 10/05/2007, 11h24
  4. droits sur répertoire web
    Par emathieu13 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 03/04/2006, 20h59
  5. Lister un répertoire Web distant
    Par antony dans le forum Langage
    Réponses: 4
    Dernier message: 07/03/2006, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo