begin process at 2012 02 04 22:52:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > WAKE ON LAN (WAN) RÉVEILLER SA MACHINE SUR INTERNET

WAKE ON LAN (WAN) RÉVEILLER SA MACHINE SUR INTERNET


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :wake, on, lan, wan, réveiller Niveau :Débutant Date de création :17/10/2008 Date de mise à jour :17/10/2008 20:33:06 Vu / téléchargé :10 369 / 645

Auteur : gmni

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Ce code circule très peu sur la toile, pourtant c'est bien utile
de passer par PHP pour activer sa machine du mode veille. Il n'est pas de moi, l'auteur est cité. Il fonctionne très bien sur les pages perso de FREE.

Source

  • index.php --> page d'acceuil (formulaire) :
  • ---------------------------------------------
  • <html>
  • <!-- Victor d'Agostino 2007 (Libre de redistribution) -->
  • <!-- admin[at]vdagost[dot]org -->
  • </head>
  • <body>
  • <center>
  • <br><br><br>
  • <form action="result.php" method="post">
  • <!-- ----------- -->
  • <?php
  • $yip = $_SERVER["REMOTE_ADDR"];
  • echo "Adresse IP ou nom de domaine : <input type=\"text\" name=\"ip\" value=\"$yip\"/> <br>";
  • ?>
  • <!-- ----------- -->
  • Adresse mac du pc &agrave; reveiller : <input type="text" name="mac" value="00:11:22:33:44:55"/><br>
  • Port <select name="port">
  • <option label="9">9</option>
  • <option label="7">7</option>
  • </select> ( Verifiez que le port est bien redirig&eacute; )<br>
  • Mot de passe du BIOS : <input type="password" size="5" name="passbios"/> ( facultatif )<br><br>
  • <div style="text-align:center;"><input type="submit" value="Wake On Wan"/></div>
  • </form>
  • </td></tr>
  • </table>
  • </center>
  • </body>
  • </html>
  • ---------------------------------------------
  • result.php --> srcipt PHP (appelé par le formulaire) :
  • -------------------------------------
  • <?php
  • /*
  • * Victor d'Agostino 2007 (Libre de redistribution)
  • * admin[at]vdagost[dot]org
  • */
  • function secure_string($string)
  • {
  • $string = stripslashes($string);
  • $string = htmlentities($string);
  • $string = strip_tags($string);
  • return $string;
  • }
  • function wake_on_wan($addr, $mac,$port, $pwd)
  • {
  • $addr_byte = explode(':', $mac); //Suppression des doubles points et creation du tableau
  • $hw_addr = ''; //variable de l'adresse physique
  • for($a=0; $a <6; $a++)
  • {
  • $hw_addr .= chr(hexdec($addr_byte[$a]));
  • }
  • $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
  • for ($a = 1; $a <= 16; $a++)
  • $msg .= $hw_addr;
  • $mdp = strlen($pwd);
  • if($mdp!=0)
  • {
  • $completion = 6 - $mdp;
  • $msg .= $pwd;
  • for($i=0;$i<$completion;$i++)
  • $msg .= chr(hexdec(00));
  • }
  • $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
  • if($s == false) {
  • echo '<b>Erreur du cot&eacute; serveur ou parametres invalides</b><br />';
  • echo "<i>Creation du socket impossible</i>\n";
  • return FALSE;
  • }
  • else
  • {
  • $opt_ret = socket_set_option($s, 1, 6, TRUE);
  • if($opt_ret <0) {
  • echo "<b>Erreur du cot&eacute; serveur</b><i>socket_set_option</i>\n";
  • return FALSE;
  • }
  • if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $port)) {
  • echo "<b>Signal de reveil envoy&eacute; &agrave; $addr pour $mac sur le port $port</b><br />";
  • if($mdp!=0)
  • echo "<b>Mot de passe utilisateur BIOS : oui</b>\n";
  • else
  • echo "\n";
  • socket_close($s);
  • return TRUE;
  • }
  • else {
  • echo "<b>Erreur lors de l'envoi du signal</b><br />";
  • echo "<i>Mauvais parametres ou parametres absents</i>\n<br />";
  • return FALSE;
  • }
  • }
  • }
  • flush();
  • $p_ip = secure_string($_POST["ip"]);
  • $p_mac = secure_string($_POST["mac"]);
  • $p_port = $_POST["port"];
  • $p_mdp = secure_string($_POST["passbios"]);
  • echo "<html><head><title>Wake On WAN $p_ip ($p_mac) sur port $p_port</title>\n";
  • echo '<meta name="robots" content="noindex, nofollow"/>';
  • echo "\n</head>\n\n<body>\n";
  • echo "<table class=\"tabform\"><tr><td><br>\n";
  • //--------
  • wake_on_wan($p_ip, $p_mac, $p_port, $p_mdp);
  • //--------
  • echo "<br></body></html>";
  • ?>
  • -------------------------------------
index.php --> page d'acceuil (formulaire) :
---------------------------------------------
<html> 
<!-- Victor d'Agostino 2007 (Libre de redistribution) --> 
<!-- admin[at]vdagost[dot]org --> 
</head> 

<body> 
<center>
<br><br><br>
<form action="result.php" method="post"> 
<!-- ----------- -->
<?php 
$yip = $_SERVER["REMOTE_ADDR"]; 
echo "Adresse IP ou nom de domaine : <input type=\"text\" name=\"ip\" value=\"$yip\"/> <br>"; 
?>
<!-- ----------- -->
Adresse mac du pc &agrave; reveiller : <input type="text" name="mac" value="00:11:22:33:44:55"/><br> 
Port <select name="port"> 
<option label="9">9</option> 
<option label="7">7</option> 
</select> ( Verifiez que le port est bien redirig&eacute; )<br> 
Mot de passe du BIOS : <input type="password" size="5" name="passbios"/> ( facultatif )<br><br>
<div style="text-align:center;"><input type="submit" value="Wake On Wan"/></div> 
</form> 
</td></tr>
</table>
</center>
</body> 
</html>  
---------------------------------------------


result.php --> srcipt PHP (appelé par le formulaire) :
-------------------------------------
<?php 

/* 
 *  Victor d'Agostino 2007 (Libre de redistribution) 
 *  admin[at]vdagost[dot]org 
 */ 

function secure_string($string) 
{ 
  $string = stripslashes($string); 
  $string = htmlentities($string); 
  $string = strip_tags($string); 
  return $string; 
} 

function wake_on_wan($addr, $mac,$port, $pwd) 
 {

  $addr_byte = explode(':', $mac);   //Suppression des doubles points et creation du tableau 
  $hw_addr = '';  //variable de l'adresse physique 

  for($a=0; $a <6; $a++) 
  { 
   $hw_addr .= chr(hexdec($addr_byte[$a])); 
  } 
  
  $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255); 
  
  for ($a = 1; $a <= 16; $a++) 
  $msg .= $hw_addr; 
  
  $mdp = strlen($pwd); 
  if($mdp!=0) 
   { 
    $completion = 6 - $mdp; 
   $msg .= $pwd; 
    
   for($i=0;$i<$completion;$i++) 
   $msg .= chr(hexdec(00)); 
   } 
    
  $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 

  if($s == false) { 
    echo '<b>Erreur du cot&eacute; serveur ou parametres invalides</b><br />'; 
    echo "<i>Creation du socket impossible</i>\n"; 
    return FALSE; 
   } 
  else 
    { 
   $opt_ret = socket_set_option($s, 1, 6, TRUE); 
   if($opt_ret <0) { 
     echo "<b>Erreur du cot&eacute; serveur</b><i>socket_set_option</i>\n"; 
     return FALSE; 
     } 
   if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $port)) { 
     echo "<b>Signal de reveil envoy&eacute; &agrave; $addr pour $mac sur le port $port</b><br />"; 
     if($mdp!=0) 
     echo "<b>Mot de passe utilisateur BIOS : oui</b>\n"; 
     else 
     echo "\n"; 
     socket_close($s); 
     return TRUE; 
     } 
   else { 
     echo "<b>Erreur lors de l'envoi du signal</b><br />"; 
     echo "<i>Mauvais parametres ou parametres absents</i>\n<br />"; 
     return FALSE; 
     } 
   } 
 } 

flush(); 

$p_ip = secure_string($_POST["ip"]); 
$p_mac = secure_string($_POST["mac"]); 
$p_port = $_POST["port"]; 
$p_mdp = secure_string($_POST["passbios"]); 

echo "<html><head><title>Wake On WAN $p_ip ($p_mac) sur port $p_port</title>\n";
echo '<meta name="robots" content="noindex, nofollow"/>'; 
echo "\n</head>\n\n<body>\n"; 
echo "<table class=\"tabform\"><tr><td><br>\n"; 
//--------
wake_on_wan($p_ip, $p_mac, $p_port, $p_mdp); 
//--------
echo "<br></body></html>"; 

?>
-------------------------------------

 Conclusion

Testé sur Windows XP et Mac 0SX depuis un PC distant.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 octobre 2008 20:33:06 :
->correction

 Sources du même auteur

LISTER DES LIENS / URLS DEPUIS UN TEXTE

 Sources de la même categorie

Source avec Zip TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES par ravery
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip VALIDATEUR_3WC par lezj
Source avec Zip MYGGL GOOGLE API CLASS FOR BEGINERZ par lezj
CLASSE WIKILOC par aKheNathOn

 Sources en rapport avec celle ci

ALLUMER UNE MACHINE DANS UN RÉSEAU (WAKE ON LAN) par olbou621

Commentaires et avis

Commentaire de simonviei le 20/10/2008 06:54:54

Plop :)

1- Il faut faire de l'objet
2- Séparation du rendu html de ton code php
3- Un poil de commentaire serait nickel ^^

Voila :)

Commentaire de yoman64 le 22/10/2008 04:27:06

Hello,

De l'objet pour un code comme ça n'aurait pas grand intérêt d'autant plus qu'il n'y a qu'une fonction et qu'instancier un objet est coûteux...

Par contre oui séparer le html du code php, la fonction devrait retourner un code d'erreur, thrower des exceptions ou encore retourner true/false mais pas afficher de html.

L'autre reproche qu'on pourrait faire c'est que récemment (enfin il y a quelques mois) une source similaire a été postée:
http://www.phpcs.com/codes/ALLUMER-MACHINE-DANS-RESEAU-WAKE-ON-LAN_45455.aspx


a+

Commentaire de olbou621 le 02/11/2008 18:25:35

Bonjour,

C'est vrai que ta source "ressemble" à la mienne, mais ...
La tienne apporte un plus :

- Elle serait utilisable sur un WAN.
- Elle exploite le mot de passe bios.

Donc, "MA" source (qui est en fait une source en C que j'ai adapté au php et dont je ne connais pas l'auteur) ( donc c'est pas vraiment la mienne ) ( mais quand même un petit peu) ne se trouve nullement offensé.

Cela dit, c'est vrai que ton code jetté en vrac comme ça avec du php mélangé au html, ce n'est pas très propre. Enfin bon, je suis sûr que si quelqun en a besoin, il lui sera simple de remettre un peu d'ordre.

Merci donc de nous faire part de ta trouvaille.  

Cdlt
olbou621

Commentaire de gmni le 13/11/2008 23:55:47

Merci olbou621, en effet le but n'est pas de copier ou refaire
une source, mais ici c'est de la diffuser pour ceux qui veulent
bien prendre ce qu'il y a dedans, voir l'utiliser...
aplus; gmni.

Commentaire de ghell2000 le 11/07/2010 11:59:56

Malheureusement, ça ne fonctionne pas, en tout cas en WAN.
Cela ne me surprend pas vraiment, dans la mesure ou il manque un parametre: celui du submask.
Voir par exemple http://www.depicus.com/wake-on-lan/woli.aspx

Commentaire de yvespaul le 21/09/2010 18:26:10

bonjour
j'ai voulu tester le code en local sur un pc avec easyphp 5.3.1.0 ,afin de l'installer ensuite sur un NAS Synology ( que je compte acquérir prochainement ) pour réveiller ce pc sur le réseau local
j'ai donné l'adresse IP du PC 192.168.1.100 et j'ai laissé l'adresse MAC de démonstration ( 112233445566 )
j'ai récupéré l'erreur suivante : Fatal error: Call to undefined function socket_create() in M:\EasyPHP-5.3.3\www\result.php on line 42
avez vous une solution pour ce problème ?
merci beaucoup.
Cdlt

Commentaire de archibal11 le 25/08/2011 14:45:25 7/10

Bonjour
cela ne marche pas me dis que cela été envoyé mais le pc ne démarre pas.
par http://www.depicus.com/wake-on-lan  cela marche bien

j'ai vu plus haut que il manquerait le submask pour que cela fonctionne quelqu'un a t'il réglé ce probléme?

merci de votre aide...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Wake on lan [ par Elektordi ] Est-ce que quelqu'un sait commant allumer un PC a distance (qui supporte le WOL) via une interface PHP tournant sur un serveur siué sur le même réseau wake on lan [ par salehtch ] SAS salut offaite j ai de probleme avec le wake on lan je ve le fonctionné via le internet en local sa marche mais je l es fai avec le magik packe publication sur LAN + easyphp [ par twiems ] TwiemsBonjourJ'ai un prôblème concernant la publication d'un site intranet avec easyphp. Ce site se trouve sur un ordinateur du réseau et je souhaite tester presence machines sur un LAN [ par Elkaire ] Voila mon probleme j'aimerais savoir si il est possible de tester la presence de machine sur un reseaux afin de renseigner un client socket. Voici com Un nom de domaine en LAN avec Apache [ par grandvizir ] Bonjour,J'ai EasyPhp 1.7 (soit PHP 4.4.3.3) sous Apache 1.3.27 avec Windows 98SE.H&#233;bergeant un site en r&#233;seau local, serait-il possible (et reseau lan en pascal [ par baileys57 ] bonjour,je suis un debutant en turbo pascal et je suis a la recherche d'un code source pour faire un reseau en dhcp, car je veux relier des pc pour le modifier un plugin de mon portail [ par xavier230573 ] bonjour à tous j'utilise ce plugin pour présenter des videosj'aimerai uploadé plusieur video en même temp car le plugin enregistre une seul video <br


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales