2012-05-27 1 views
0

J'essaie de créer un nouveau compte ftp lorsqu'un formulaire PHP est traité. Si j'entrer cette adresse dans ma barre d'adresse du navigateur:Création d'un compte FTP dans cPanel à l'aide du fichier file_get_contents de PHP

http://cpanel_username:[email protected]$mydomain.com:2082/json-api/cpanel?cpanel_jsonapi_version=2&cpanel_jsonapi_module=Ftp&cpanel_jsonapi_func=addftp&user=ftp_username&pass=ftp_password&homedir=/the/users/homefolder&quota=0

... les résultats au format JSON sont affichés à l'écran et un compte ftp est créé comme spécifié. Cependant, quand je l'utilise dans un fichier PHP, je n'arrive pas à le faire fonctionner! Voici ce que j'ai:

$user = "cpanel_username"; 
$pass = "cpanel_password"; 
$domain = "mydomain.com"; 
$fuser = "ftp_username"; 
$fpass = "ftp_password"; 
$fhomedir = "/the/users/homefolder"; 

$url = "http://$user:[email protected]$domain:2082/json-api/cpanel?cpanel_jsonapi_version=2&cpanel_jsonapi_module=Ftp&cpanel_jsonapi_func=addftp&user=$fuser&pass=$fpass&homedir=$fhomedir&quota=0"; 

file_get_contents($url); 

J'ai aussi essayé d'utiliser CURL:

function new_get_file_contents($url) { 
$ch = curl_init(); 
$timeout = 10; 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
$file_contents = curl_exec($ch); 
curl_close($ch); 
return $file_contents; 
} 

new_get_file_contents($url); 

Toutes les idées pourquoi je ne peux pas obtenir ce travail?

Répondre

0

Cela ne fonctionne probablement pas car cURL n'a pas accès à une session/cookies cPanel. La saisie de l'URL fonctionne directement dans un navigateur Web, car le navigateur préserve l'état de la session cPanel entre les demandes. La seule façon de résoudre ce problème est de vous connecter d'abord à cPanel en utilisant les requêtes cURL et HTTP POST. Des outils comme FireBug et Fiddler peuvent vous aider à voir les éléments de formulaire HTML ou les champs HTTP POST exacts, y compris les en-têtes HTTP, envoyés lors de la connexion. Émuler le processus de connexion avec cURL et inclure votre code devrait faire l'affaire.

Cela peut vous aider à déplacer le long:

+0

Je Firebug ... qu'est-ce que je regarde quand je crée le compte ftp dans le navigateur? ... Il a toujours l'habitude de travailler tout en utilisant file_get_contents, mais maintenant que j'ai changé d'hôtes, ça ne fonctionne plus. – JROB

+0

Sur la page de connexion cPanel, observez le code HTML de la balise

. Il y a habituellement éléments; vous devez noter l'attribut name sur ces éléments. Lorsque vous faites le HTTP POST en utilisant cURL vous devez inclure tous ces champs. Jetez un oeil à ces exemples: http://davidwalsh.name/execute-http-post-php-curl, http://stackoverflow.com/questions/4889529/http-post-in-php-without-curl-using -username-password-param1-param2string-ar –

0

... Testée et approuvée

Vous devez entrer des variables

$cpaneluser = Your cpanel username 
$cpanelpass = Your cpanel password 
$domain = your domain name (xyz.com) 
$fuser = ftp username 
$fpass = ftp password 
$homedir = ftp directory 

$url = "http://$cpaneluser:[email protected]$domain:2082/json-api/cpanel?"; 
$url .= "cpanel_jsonapi_version=2&cpanel_jsonapi_module=Ftp&cpanel_jsonapi_func=addftp&"; 
$url .= "user=$fuser&pass=$fpass&homedir=$fhomedir&quota=0"; 

var_dump($url); 
$result = @file_get_contents($url); 
if ($result === FALSE) 
die("ERROR: FTP Account not created. Please make sure you passed correct parameters."); 
echo $result; 

espère que cela aide ..