Hola finalmente lo pude conseguir pero enviando las variables por post mediante formulario y pues ahora funciona muy bien aki les pongo el script para ke cualkiera ke este mucho mas entendido sobre el tema lo mejore
1. Con un editor de imagenes(Photoshop p. ej.) creamos dos graficos pekeños uno rojo ke indicarake el puerto esta cerrado y uno verde ke indicara ke el puerto esta abierto y lo guardamos en un directorio llamado
images.
2. Creamos un archivo txt y lo llamamos
puertos y en ello ponemos los puertos mas comunes y su descripcion uno debajo de otro. P. ej.:
3. Luego creamos un formulario:
Código HTML:
<form action="scan.php" method="post">
<input name="ip" type="text" size="15" maxlength="15" />
<input type="submit" name="accion" value="Escanear" />
</form>
4. Finalmente este es el script ke recoge los datos enviados desde el formulario y los procesa para luego arrojar los resultados del analisis:
Código PHP:
<table style="border: 1px solid #0066cc;" width="70%">
<tr>
<td style="text-align: center; border: 1px solid #e0e0e0; padding: 5px; color: #FFF; background: #0066cc; font-weight: bold;">Status</td>
<td style="text-align: center; border: 1px solid #e0e0e0; padding: 5px; color: #FFF; background: #0066cc; font-weight: bold;">Puerto</td>
<td style="text-align: center; border: 1px solid #e0e0e0; padding: 5px; color: #FFF; background: #0066cc; font-weight: bold;">Descripción</td>
</tr>
<?php
# Pongo el time limit en 0 para que no se acabe el script por time limit.
set_time_limit(0);
# Cojo los puertos de puertos.txt y los meto en un array
$db = file('puertos.txt');
foreach ($db as $a=>$b) {
$puerto = explode(" ",$b);
$desc = str_replace($puerto[0]." ","",$b);
$ports[$puerto[0]] = $desc;
}
# Verifico que la ip sean numeros
if(is_numeric(str_replace(".","",$_POST['ip']))) {
# Con este foreach verifico todos los puertos
foreach($ports as $a=>$b) {
# Si conecto pongo que conecto
if(conecta($a)) {
pon($a,$b,"./images/on.png");
}
# Si no conecto pongo que no conecto
else {
pon($a,$b,"./images/off.png");
}
}
}
else { die("La ip debe contener solamente numeros."); }
# Función que me dice si el puerto esta abierto o no
function conecta ($port) {
$conexion = @fsockopen($_POST['ip'],$port,$errno,$errstr,5);
@fclose($conexion);
if($conexion) return 1;
else return 0;
}
# Función que pone si el puerto esta abierto o no.
function pon ($port,$desc,$img) { ?>
<tr>
<td style="text-align: center; border: 1px solid #e0e0e0; background: #f7f7f7; padding: 5px;"><img src="<?=$img?>" alt="Resultado de análisis" /></td>
<td style="text-align: center; border: 1px solid #e0e0e0; padding: 5px;"><?=$port?></td>
<td style="text-align: left; border: 1px solid #e0e0e0; background: #f7f7f7; padding: 5px;"><?=$desc?></td>
</tr>
<? } ?>
</table>
Eso seria todo, espero ke les sirva de ayuda y si alguien sabe como poder mejorarlo pues se agradece su colaboracion.
Saludos