PHP et sécurité

Bonjour à tous
Je cherche à récupérer le status.xml et à envoyer des commandes à la carte par un site fait en PHP. Par contre pour des raisons de sécurité, il faut que le mot de passe soit activé sur la carte.
Avez vous déjà fait ça ?

J’ai pas vraiment compris ce que tu veux faire. Tu peux en dire un peu plus ?

Bonsoir Spy
En fait, je trouve que la memoire de la carte est limitée pour faire un site graphique sympa.
Je veux donc créer mon site sur un autre serveur mais je trouve que le fait que les commandes soientt « en clair » en javascript et donc les mot de passe avec, ce n’est pas très sécurisant.
La carte et mon serveur web étant dans le même réseau, je souhaite faire mon site en php (identification avec base mysql) et lire le fichier xml sur la carte (avec ip locale) ou envoyer des commandes par php. Ma carte resterait malgré tout avec le mot de passe activé.
Il me semble que tu as déjà fait un site du même genre non ?

Bonjour,
$xml = simplexml_load_file(‹ http://TON_IP_ICI/status.xml ›);
ne va pas passer les mots de passe!

En CURL par contre il est possible de passer les user et password
Avec : curl_setopt($ch, CURLOPT_USERPWD, « $username:$password »);
je n’ai pas testé!

Voici un script PHP avec du Curl (verifier qu’il est activé avec echo’

 phpinfo: ‹ ; print_r(phpinfo()); echo ›
';
).

Bref lancé depuis un web serveur ce script écrit dans le IPX des timers de façon aléatoire ce qui valide le code Curl.
Ici on écrit dans le IPX mais il est encore plus facile de lire le status.xml en Curl aussi!

Essaye avec la ligne ci-dessus en plus!

Bye
Rno

PS: le script:

Lancement de commandes CURL <?php

$ip = « 192.168.0.6 »;

//url de la page de soumission
$url = « http:// ».$ip.« /protect/timers.htm »;

// ===============================
// GENERATEUR de TIMERS de 0 à 15!
// ===============================
echo « 
--------------
Setting Timers
--------------
 »;
$fields = array();
// Set Timers
// génération de valeurs du formulaire
for ($i = 0; $i <= 9; $i++) {
$temps = time() + ($i60);
$fields[« Timer0 ».$i.« Time »] = urlencode(date(H,$temps).« : ».date(i,$temps));
$fields[« Timer0 ».$i.« Relay »] = floor($i/2);
$j = $i+1;
$fields[« Timer0 ».$i.« Action »] = 2
($j/2-floor($j/2));
}
for ($i = 10; $i <= 15; $i++) {
$temps = time() + ($i60);
$fields[« Timer ».$i.« Time »] = urlencode(date(H,$temps).« : ».date(i,$temps));
$fields[« Timer ».$i.« Relay »] = floor($i/2);
$j = $i+1;
$fields[« Timer ».$i.« Action »] = 2
($j/2-floor($j/2));
}
// $postfields[« TimeSaving »] = « 01 »;
$fields[« TimeSaving »] = « 01 »;

if(1){echo ‹ 

 ›; print_r($fields); echo ‹ 
 ›; }

// ===============
// EOF GENERATEUR
// ===============

// +++++++++++++++
// cURL Publishing
// +++++++++++++++

$useragent = « Mozilla/5.0 »;
$referer = $url;
echo $url;
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.‹ = ›.$value.‹ & ›; }
rtrim($fields_string,‹ & ›);
// $fields_string = implode(« & »,$fields); A AMELIORER pour ajouter l’index!
echo $fields_string;

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT, $useragent);
curl_setopt($ch,CURLOPT_REFERER, $referer);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);

//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);

// ++++++++++++++++++++
// EOF cURL Publishing
// ++++++++++++++++++++

//on peut faire un echo du résultat obtenu
echo $result;

?>



c’est fini!

<?php setlocale (LC_TIME, 'fr_FR.utf8','fra'); echo str_replace("é","é",str_replace("û","û",strftime("%A: %d-%b-%G @ %H:%M"))); ?>

C’est toujours mieux d’avoir la solution qu’une suggestion :slight_smile:
Alors voici la page amendée avec user mdp!
Bye
Rno
PPS: les timers sont pratiques pour tester car j’y met l’heure actuelle (+1min par timer), donc en un « refresh » on voit si le script est passé.
[size=85]---------------------------------------------------------------------------------
PS: SetTimers.php code below

[color=#0040FF]Lancement de commandes CURL

<?php

// url de la page de soumission et usr/mdp
$ip = « 192.168.0.6 »;
$url = « http:// ».$ip.« /protect/timers.htm »;
$username = « user »;
$password = « admin »;
// ===============================
// GENERATEUR de TIMERS de 0 à 15!
// ===============================
echo « 
--------------
Setting Timers
--------------
 »;
$fields = array();
// Set Timers
// génération de valeurs du formulaire
for ($i = 0; $i <= 9; $i++) {
$temps = time() + ($i60);
$fields[« Timer0 ».$i.« Time »] = urlencode(date(H,$temps).« : ».date(i,$temps));
$fields[« Timer0 ».$i.« Relay »] = floor($i/2);
$j = $i+1;
$fields[« Timer0 ».$i.« Action »] = 4; // INV! 2
($j/2-floor($j/2));
}
for ($i = 10; $i <= 15; $i++) {
$temps = time() + ($i60);
$fields[« Timer ».$i.« Time »] = urlencode(date(H,$temps).« : ».date(i,$temps));
$fields[« Timer ».$i.« Relay »] = floor($i/2);
$j = $i+1;
$fields[« Timer ».$i.« Action »] = 4; // 2
($j/2-floor($j/2));
}
// $postfields[« TimeSaving »] = « 01 »;
$fields[« TimeSaving »] = « 01 »;

if(1){echo ‹ 

 ›; print_r($fields); echo ‹ 
 ›; }

// ===============
// EOF GENERATEUR
// ===============

// +++++++++++++++
// cURL Publishing
// +++++++++++++++

$useragent = « Mozilla/5.0 »;
$referer = $url;
echo $url;
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.‹ = ›.$value.‹ & ›; }
rtrim($fields_string,‹ & ›);
// $fields_string = implode(« & »,$fields); A AMELIORER pour ajouter l’index!
echo $fields_string;

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, « $username:$password »);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_USERAGENT, $useragent);
curl_setopt($ch,CURLOPT_REFERER, $referer);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);

//execute post
$result = curl_exec($ch);
// retreiving useful information about the HTTP status
$info = curl_getinfo($ch);
//close connection
curl_close($ch);

if(1){echo ‹ INFO ON HTTP Status:

 ›; print_r($info); echo ‹ 
 ›; }

// ++++++++++++++++++++
// EOF cURL Publishing
// ++++++++++++++++++++

//on peut faire un echo du résultat obtenu
echo $result;

?>



c’est fini!

<?php setlocale (LC_TIME, 'fr_FR.utf8','fra'); echo str_replace("é","é",str_replace("û","û",strftime("%A: %d-%b-%G @ %H:%M"))); ?> [/color] [/size]

Bon j’ai l’impression d’intimider avec des longs code…
Voici la lecture en php/Curl (natif en easyPHP) de status.xml protege par mot de passe.
Bye
Rno

[size=30][code]Lancement de commandes CURL

<?php

// url de la page de soumission et usr/mdp
$ip = « 192.168.0.6 »;
$url = « http:// ».$ip.« /status.xml »;
$username = « user »;
$password = « admin »;

// +++++++++++++++
// cURL Publishing
// +++++++++++++++

$useragent = « Mozilla/5.0 »;
$referer = $url;
echo $url;
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.‹ = ›.$value.‹ & ›; }
rtrim($fields_string,‹ & ›);
// $fields_string = implode(« & »,$fields); A AMELIORER pour ajouter l’index!
echo $fields_string;

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, « $username:$password »);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch,CURLOPT_USERAGENT, $useragent);
curl_setopt($ch,CURLOPT_REFERER, $referer);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);

//execute post
$result = curl_exec($ch);
// retreiving useful information about the HTTP status
$info = curl_getinfo($ch);
//close connection
curl_close($ch);

if(0){echo ‹ INFO ON HTTP connection:

 ›; print_r($info); echo ‹ 
 ›; }

// ++++++++++++++++++++
// EOF cURL Publishing
// ++++++++++++++++++++

//echo du résultat obtenu… parsing XML a faire…
if(1){echo ‹ shoutback:

 ›; print_r($result); echo ‹ 
 ›; }

?>



c’est fini!

<?php setlocale (LC_TIME, 'fr_FR.utf8','fra'); echo str_replace("é","é",str_replace("û","û",strftime("%A: %d-%b-%G @ %H:%M"))); ?> [/code][/size]

Merci beaucoup, c’est effectivement un peu plus clair/simple.
Je ne connaissais pas le curl mais mon serveur le supporte donc je vais essayer.