Portegag2’s Weblog

Just another WordPress.com weblog

Archive for the ‘documentacion’ Category

OpenVPN

Posted by portegag2 on October 26, 2009

MANDAR A : sergio.lopez.rubio@gmail.com

Genera un fichero con la clave

openvpn –genkey –secret static.key .

Edita el contenido..

cat static.key

En el fichero server.conf definimos este contenido.

dev tun (se crea el tun)
ifconfig 10.8.0.1 10.8.0.2 (las direcciones virtuales del TUN A y del TUN B)
secret static.key (que utiliza el fichero que hemos creado de static.key)

Se lanza el servicio desde la consola con la línea de comando

openvpn server.conf

Hay que dejar el servidor lanzado, es decir, en Linux no se puede cerrar el terminal que ha lanzado el server. O se puede lanzar como daemon, es decir residente.

¡Y con esto se tiene instalado el servidor!

En el cliente:

En Archivos de programana/openvpn/config… hemos creado una carpeta y un fichero client-statickey.ovpn

Y se pone:

remote 172.22.40.16 (que es la dirección ip del equipo) dev tun ifconfig 10.8.0.2 10.8.0.1 secret static.key (este es el fichero static.key que se ha puesto en el otro equipo y que tiene que estar en el equipo cliente en el mismo path en el que he creado el fichero client.statickey.ovpn

Luego se lanza el servicio del cliente, es decir el fichero client.statickey.ovpn.

  • Windows: Con el boton derecho aparece la opción
  • Linux: comando , sería el comando
    openvpn client-static.ovpn

Para la compresion, hay que ponerlo en ambos ficheros de configuración de ambas maquinas

comp-lzo

server.conf

dev tun ifconfig 10.8.0.1 10.8.0.2 #En el caso del CLIENTE cambiamos las IPs #ifconfig 10.8.0.2 10.8.0.1 secret static.key #Algoritmo de compresion comp-lzo #Tolerancia a fallos de la red keepalive 10 60 ping-timer-rem persist-tun persist-key #Estos comandos siguientes son propios del servidor. #Perdida de privilegios para que no se haga nada si alguien consigue entrar. #En este caso el usuario y el grupo han de estar definidos. #user nobody #group nobody #Lo lanzamos como demonio, es decir, como dejarlo sin necesitar que esté la #terminal activa dónde lo hemos lanzado antes con el comando openvpn #server.conf. #Quizás haya que hacer algo más para efectívamente tenerlo como demonio. #daemon

cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/4.-pki/ Dentro del fichero vars cambiar este valor porque 4.-keys es donde dejaremos las claves export KEY_DIR=”/etc/openvpn/4.-keys” export KEY_SIZE=2048 (hacemos las claves más largas para que sean más seguras) Para ejecutar el vars: /4.-pki/source vars luego hacemos el ./build-dh para que genere números aleatorios grandes Hay que poner el “./” para que los ejecute. Para crearnos como certificadores: ./pkitool –initca ./pkitool –server cursoPKI ./pkitool client1 ./pkitool –pass client2 ./pkitool –csr client3 ./pkitool –sign client3 ./pkitool –sign client3 Así firmas al cliente  y tendrá el certificado. Ficheros que genera: -rw-r–r– 1 root root 1635 2009-10-27 10:31 ca.crt -rw——- 1 root root 1675 2009-10-27 10:31 ca.key -rw-r–r– 1 root root 5208 2009-10-27 10:39 client1.crt -rw-r–r– 1 root root 1029 2009-10-27 10:39 client1.csr -rw——- 1 root root 1675 2009-10-27 10:39 client1.key -rw-r–r– 1 root root 5208 2009-10-27 10:39 client2.crt -rw-r–r– 1 root root 1029 2009-10-27 10:39 client2.csr -rw——- 1 root root 1743 2009-10-27 10:39 client2.key -rw-r–r– 1 root root 5208 2009-10-27 10:37 client3.crt -rw-r–r– 1 root root 1029 2009-10-27 10:36 client3.csr -rw——- 1 root root 1675 2009-10-27 10:36 client3.key -rw-r–r– 1 root root 5331 2009-10-27 10:32 cursoPKI.crt -rw-r–r– 1 root root 1033 2009-10-27 10:32 cursoPKI.csr -rw——- 1 root root 1679 2009-10-27 10:32 cursoPKI.key CON ROUTING serverRouting.conf con estos valores #Puerto a la escucha port 1194 #Protocolo a utilizar (udp tcp) proto udp #Estamos en routing dev tun #Claves a utilizar ca /etc/openvpn/4.-keys/ca.crt cert /etc/openvpn/4.-keys/cursoPKI.crt key /etc/openvpn/4.-keys/cursoPKI.key #Diffie Hellman dh /etc/openvpn/4.-keys/dh2048.pem #Definicion de la red server 10.8.0.0 255.255.255.0 #Persistencia de IP Asignada, es decir: #cada vez que te conectas tengas la misma IP. #ipp.txt es un fichero que guarda la relacion entre las MAC y las IP ifconfig-pool-persist ipp.txt #Duplicado de claves ;duplicate-cn #Tolerancia a fallos, 120 segundos keepalive 10 120 #Encapsulamiento comp-lzo #Tolerancia + degradacion de privil. persist-key persist-tun #Loggin… quien se conecta status openvpn-status.log #Feedback verb. verb 3 ************************************* Para matar un servicio que esté corriendo y no lo encuentras: ps aux | grep openvpn Esto nos devuelve un listado con un numero, cogiendo el más pequeño pones kill -9 numero Las claves que guardamos en el cliente son:

  1. ca.crt
  2. client1.crt
  3. client1.key

El fichero de configuracion del cliente tendrá: #Indicarle que es un cliente client #Interfaz dev tun #Protocolo proto udp #Direccion del serv (IP/Dir. dominio) remote 172.22.40.165 #Client directive: reiteracion infinita de la conexión #El cliente se intenta conectar pero el servidor está caido #Con esta directiva el cliente intenta reentrar infinitamente. resolv-retry infinite #No bind a puerto local nobind #Claves a utilizar ca ../4.-keys/client1/ca.crt cert ../4.-keys/client1/client1.crt key ../4.-keys/client1/client1.key #Verificacion del certificado del servidor #Pide la validación del servidor. #Necesario para evitar ataques tipo Man in the Middle ns-cert-type server #Encapsulación comp-lzo #Feedback verb 3 Para conectarse desde el cliente, con el boton derecho sobre el archiv de conf del cliente: Start VPN on this file BRIDGING Hace falta la instalación de: apt-get install bridge-utils

serverBridging.conf

port 1194 proto udp dev tap0 ca /etc/openvpn/4.-keys/ca.crt cert /etc/openvpn/4.-keys/cursoPKI.crt key /etc/openvpn/4.-keys/cursoPKI.key dh /etc/openvpn/4.-keys/dh2048.pem ifconfig-pool-persist ipp.txt #nueva directiva respecto del routing server-bridge 172.22.40.100 255.255.255.0 172.22.40.110 keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb3 Los scripts bridge-start y bridge-stop son necesarios para que se puedan crear los puentes y por lo tanto tendrían que estar en el inicio de los servidores.

Routing puerto 443

Casos de uso en redes filtradas. El puerto 443, es un puertos abiertos por la configuración de la red, habitualmente. De esta forma en redes filtradas se puede acceder. Otro puerto es el 80. En el serverRouting.conf

#Puerto a la escucha #Es mejor, no sé por qué. port 443

En el cliente en el fichero client.routing.ovpn

remote 172.22.40.165 443

Para poner los servidores en marcha automaticamente valdría poniendo los .conf del servidor en la carpeta raiz: /etc/openvpn/

Conectarse al servidor a través de un proxy

En este caso el proxy está en el cliente para salir a internet. Directivas en el cliente:

  • http-proxy-retry #retry on connection failure
  • http-proxy proxy.bed.net 3128 #proxy.bed.net 3128 es el proxy de la red del cliente.
  • remote zubia.gotdns.com 443

Ampliar el alcance a otros elementos de la red

El router tiene que tener la regla para que mande de la VPN a la red interna, que será: llevar tráfico 10.8.0.0 a 172.22.40.158 #En el caso de Routing #añadir acceso a equipos en el lado del servidor push “route 172.22.40.0 255.255.255.0″ #En el caso de Bridging no habría que hace nada en el conf del servidor. Añadir máquinas en el cliente Def un fich de conf por clientes ccd Indicar la ruta del cliente que siempre tendrá que ser la misma. #Comunicacion entre clientes client-to-client #Maquinas en el cliente accesibles a otros clientes push “route 192.168.3.0 255.255.255.0″ en el caso de usar Bridge entre varios clientes ya estaría.

Casos de Uso

  • Oficina remota: Una persona se conecta a la red de la oficina así que hay que agregar maquinas (impresoras, CRM, Voz IP) que están más allá del servidor.
  • Conexiones entre sedes
  • Red Filtrada

#Para que el servidor reencamine las rutas hay que activar en el servidor el IP_FORWARDING… #En el terminal del servidor VPN ejecutar esta línea para que esté el IP_FORWARDING echo “1″  > /procc/sys/net/ipv4/ip_forward iptables -t nat -A PSOTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE #Router #Tiene que estar configurado con una regla para que el tráfico 10.8.0.0/24 #se encamine a el servidor de la VPN (en la LAN local) 172.22.40.8 #Hay que enviarle rutas nuevas al cliente para que alcance otras máquinas route 172.22.40.0 255.255.255.0

Compartir arch de Windos

conf el servicio como brindging o con routing con servidor de Wins

Balanceo de carga

Definir varios servidores de VPN. Si estan en la misma maquina tendrás distintos puertos. Lo mejor es que esten en máquinas distintas. Una vez lanzados los servidores en el cliente. en /openvpn/config/balancin remote 172.22.40.158 443 remote 172.22.40.158 444 remote 172.22.40.158 444 #Balanceo aleatorio remote-random #Para indicarle cuanto tiempo tiene para resolver la conexión resolve-retry 60 #aumentando la se tls-auth

Revocar CLAVES

dentro de /pki utilizaremos pkitools y el script remoke-full Primero ejecutamos . ./vars o source ./vars Ejecutamos revoke-full [nombre del cliente que es el nombre de los ficheros .crt .key] Se crea el fichero crl.pem que contiene la lista negra de los revocados Probablemente en el fich de configuración del servidor poner:

crl-verify crl.pem

Ejercicio 1 Routing
1-Server con varios Clientes.

En servidor defino PKI y configurar el server
En clientes poner las claves y conf el cte.

Directivas de seguridad en el servidor

  • Disminucion de privilegios (nivel 3)
  • udp (nivel 1)
  • tolerancia a fallos (nivel 3)
  • llave estática tls (nivel 1)
  • pki (autenticación + autorizacion) (nivel 2)

Pasos en el server:

  • Editar vars
  • comando source ./vars
  • comando ./build-dh
  • comando ./pkitool –initca
  • comando ./pkitool –server [nombre servidor]
  • comando ./pkitool [nombre cliente]
  • comando ./pkitool –pass [cliente]
  • comando ./pkitool –csr [cliente]
  • comando ./pkitool –sign [cliente]

Ficheros de claves en:

  • SERVIDOR
    • ca.crt
    • server.crt
    • server.key
    • ta.key
  • CLIENTE
    • ca.crt
    • cliente.crt
    • cliente.key
    • ta.key

Fichero de conf del cliente

client

dev tun

proto udp

remote 172.22.40.162 1194

persist-key
persist-tun

resolv-retry infinite

nobind

ca ./keys/ca.crt
cert ./keys/client2.crt
key ./keys/client2.key
tls-auth ./keys/ta.key 1

ns-cert-type server

comp-lzo

verb 3

El fichero del servidor contendrá.

# Puerto a la escucha
port 1194

# Protocolo a utilizar
proto udp

# Estamos en routing
dev tun

# Claves a utilizar
ca /etc/openvpn/ejercicio/keys-server/ca.crt
cert /etc/openvpn/ejercicio/keys-server/ServerFila3.crt
key /etc/openvpn/ejercicio/keys-server/ServerFila3.key

# Diffie Hellman
dh /etc/openvpn/ejercicio/2.-keys/dh2048.pem

# Aumentando la seguridad en el nivel 1
tls-auth /etc/openvpn/ejercicio/keys-server/ta.key 0

# Definición de la red
#ifconfig IP-servidor IP-cliente
server 10.8.3.0 255.255.255.0

# Persistencia de IP asignada
ifconfig-pool-persist ipp.txt

# Duplicado de claves
;duplicate-cn

# Tolerancia a fallos
keepalive 10 120

# Encapsulamiento
comp-lzo

# Tolerancia + degradacion de privil.
persist-key
persist-tun

# Logging quien se conecta
status openvpn-status.log

# Feedback verbosity
verb 3

#en el caso de routing, añadir acceso a otros equipos en el lado del servidor

#push “route 172.22.40.0 255.255.255.0″

#client-config-dir /etc/openvpn/5.-routing/ccd
#route 192.168.3.0 255.255.255.0

# Comunicación entre clientes
client-to-client

# Maquinas en el cliente1 accessibles a otros clientes
#push “route 192.168.3.0 255.255.255.0″

# Inyectar opciones DHCP a los clientes
#push “dhcp-options DNS 172.22.40.1″
#push “dhcp-options DNS 172.22.40.2″
#push “dhcp-options WINS 172.22.40.3″

user nobody
group nobody

Posted in documentacion | Leave a Comment »

ordenar array

Posted by portegag2 on October 6, 2009

array_multisort

Hay que meter en arrays, los valores con los que se quiere ordenar el array.

unset($marray);
unset($fila2);
unset($s1);
unset($s2);
unset($s3);
$marray=$participantes_comp;
foreach ($marray as $fila2){

$s1[] = $fila2["dia"];
$s2[] = $fila2["cod_club"];
$s3[] = $fila2["cod_part"];

}
array_multisort( $s1, SORT_REGULAR, SORT_ASC,
$s2, SORT_REGULAR, SORT_ASC,
$s3, SORT_REGULAR, SORT_ASC,
$marray);

Posted in documentacion | Tagged: , | Leave a Comment »

Tutorial de Dreamweaver

Posted by portegag2 on September 29, 2009

Este manual parece sencillo para comenzar.
http://www.aulaclic.es/dreamweaverMX/f_dreamweavermx.htm

Posted in documentacion, parados | Tagged: | Leave a Comment »

Bug en Cuadro de mando con los indicadores calculados

Posted by portegag2 on September 18, 2009

En el cuadro de mando, por ahora detectado en URKIDE, el bug es el siguiente.

Si no hay registros metidos para un indicador, no se ejecuta el proceso para calcular los valores de RESULTADO, que en el caso de indicadores calculados sí habría un valor, ya que este valor es calculado según los valores de otras tablas.

Entiendo, que esto apenas tiene repercusión, ya que lo lógico de un indicador es que tenga valores registrados.

Posted in Urkide, bugs | Tagged: , | Leave a Comment »

Mandar un Adjunto en un correo

Posted by portegag2 on September 17, 2009

Mandar un correo a través del programa con PHP.

Ficheros de la clase: http://www.phpguru.org/downloads/html.mime.mail/htmlMimeMail-2.5.2/

Codigo del archivo php que manda el correo:

<?php
include(‘htmlMimeMail.php’);

$msg_email.=”FROGA”;

$mail = new htmlMimeMail();

$mail->setFrom(‘hola@hoal.net’);

/**
* Configurar el asunto
*/

$mail->setSubject(‘ASUNTO’);

/**
* Configurar el HTML del email
*/
$mail->setHTML(“$msg_email”);

//El archivo en este caso está en el mismo directorio que
//este mismo archivo
$attachment = $mail->getFile(“DIPTICO2JORNADAS_0909.zip”);

//El ‘application/zip’ es el tipo de archivo
//Si no se conoce entonces dejarlo vacio
$mail->addAttachment($attachment, ‘DIPTICO2JORNADAS_0909.zip’ ,  ‘application/zip’);

//Dentro del array se ponen las direcciones del PARA
$mail->send(array(‘pedro@w2s.com’));
?>

Si mis correos no tienen adjunto mirar este post

Posted in documentacion, parados | Tagged: , | Leave a Comment »

Problemas con caracteres en BD

Posted by portegag2 on September 10, 2009

PROBLEMA DEFINICION CAMPO AÑO

En Urkide he llevado la BD de un servidor a otro y al crear las tablas en el nuevo el campo “año” no lo reconocía.

SOLUCION

En las definiciones de las creaciones de las tablas cambiar:

CREATE TABLE `maximos` (
`id` int(11) NOT NULL auto_increment,
`profesor` int(11) default NULL,
`competencia` int(11) default NULL,
`maximo` float default NULL,
`media` float default NULL,
`cuestionario` text,
`año` text,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=53 DEFAULT CHARSET=latin1 AUTO_INCREMENT=53 ;
por

DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

o

DEFAULT CHARSET=utf8

Es decir, lo mejor es definir el CHARSET como utf8, al menos no latin

PROBLEMA CONTENIDO CON “Ñ” o ACENTOS

En Urkide en la BD deINKESTAK en su gestión desde SQLyog existe el problema  de las “ñ” y tíldes en los contenidos de los campos; comentarios, preguntas… etc.

Cogemos como ejemplo la tabla PREGUNTAS que en INKESTAK está definida originalmente como

CREATE TABLE `preguntas` (
`id` int(11) NOT NULL auto_increment,
`pregunta` text,
`numero` int(11) default NULL,
`encabezado` int(11) default NULL,
`comentarios` text,
`competencia` int(11) default NULL,
`preguntaeus` text,
`tipo` text,
`mota` text,
`texto` text,
`escala` text,
`num_respuestas` text,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=489 DEFAULT CHARSET=latin1 AUTO_INCREMENT=489 ;

La definición óptima sería:

CREATE TABLE `preguntas2` (
`id` int(11) NOT NULL auto_increment,
`pregunta` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`numero` int(11) default NULL,
`encabezado` int(11) default NULL,
`comentarios` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci ,
`competencia` int(11) default NULL,
`preguntaeus` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`tipo` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`mota` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`texto` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`escala` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
`num_respuestas` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=489 ;

Peculiaridades del proceso de pasar la tabla de un lugar a otro.

Debido a fallos que no soy capaz de entender o concretar esta es la forma de hacer el paso en la que finalmente he conseguido que en la tabla preguntas del SQLyog los valores estuviesen bien:

  1. Hacer sólo la carga de la estructura.
  2. Hacer la carga de los datos.

Quiero decir que en todo en un mismo fichero no me ha funcionado.

Sinceramente tras haber cambiado todas las tablas de URKIDE, ha ocurrido de todo, algunas he tenido que hacer esta chapuza de cargar primero la estructura y luego los datos, en otras ha funcionado sin especificar el charset=utf en la descripción del campo y en otras ha funcionado poniendo en un mismo fichero la estructura y los datos de varias tablas.

Posted in Urkide, documentacion | Leave a Comment »

Apache: Document Root en otro ordenador

Posted by portegag2 on September 8, 2009

He intentado crear en local un HOST VIRTUAL, siguiendo estas maravillosas instrucciones, y quería que el código fuente esté en otro ordenador de la red.

En el ejemplo el ordenador es Uvedoble, que tiene como IP: 192.168.1.3

<VirtualHost 127.0.0.1:80>
ServerAdmin localhost@w2s.com
DocumentRoot “192.168.1.3\PANDUJAR\www\BIE”
ServerName bie
</VirtualHost>

<Directory “192.168.1.3\PANDUJAR\www\BIE”>
Allow from all
</Directory>

El error al reiniciar el servicio de Apache es:

Warning: DocumentRoot [C:/AppServ/Apache2.2/192.168.1.3/PANDUJAR/www/BIE] does not exist

Al intentar acceder en el navegador el error que da es el siguiente:

Forbidden

You don’t have permission to access / on this server.

Por la red apenas he encontrado información. Está este hilo que tiene el mismo problema pero no le fué resuelto, aunque al final se plantea la siguiente posible solución:

Al cambiar el documentroot a una unidad de red, el usuario con el que se está ejecutando el servicio de Wampapache probablemente no tenga permisos para acceder a esa unidad de red.

Para solucionarlo, solo tienes que ir a Panel de control, Herramientas Administrativas, localizas el servicio (creo que era) ‘Wampapache’ y en propiedades, le indicas un usuario válido de red que tenga permisos sobre la unidad F: que citas.

He intentado hacerlo; he ido a Panel de Control – Herramientas Administrativas – Servicios – Apache 2.2

Luego he intentado poner la cuenta con la que me conecto al arrancar mi ordenador, que se controla desde el servidor.

Y no ha funcionado, dando los mismos errores:

Posted in documentacion | Tagged: , , | Leave a Comment »

Graficos de barras horizontales

Posted by portegag2 on September 7, 2009

La intención es sacar un gráfico de barras, pero horizontales, no verticales.

El truco es girar el gráfico, con esta instrucción:

$graph->Set90AndMargin($left,$right,$top,$bottom);

Luego hay que jugar con los textos pero es sencillo. El código del gráfico de la imagen en:

http://doc.async.com.br/jpgraph/html/exframes/frame_horizbarex3.html

Toda la documentación de ayuda:  http://doc.async.com.br/jpgraph/html/3030barplot.html#6_3_8

Posted in comarca, documentacion | Tagged: | Leave a Comment »

Modo trabajo LOCAL en navegador

Posted by portegag2 on April 6, 2009

<?
$title= “BILBOKO ESKUALDEA – COMARCA BILBAO”;
if (ws_estoy_en_local()) $ico = “<link rel=’shortcut icon’ href=’../img/w.ico’ />”;
echo (“$ico<title>$title</title> “);
?>

Posted in documentacion | Leave a Comment »

Autocomplementado

Posted by portegag2 on March 24, 2009

Autocomplementado de campos.

En la página que muestra el campo a autocomplementar incluir:

<link rel=’stylesheet’ type=’text/css’ media=’screen’ href=’css/Autocompleter.css’ />

<script language=’JavaScript’ type=’text/javascript’ src=’jsc/mootools-release-1.11.js’></script>
<script language=’JavaScript’ type=’text/javascript’ src=’jsc/Observer.js’></script>
<script language=’JavaScript’ type=’text/javascript’ src=’jsc/Autocompleter.js’></script>

El campo a autocomplementar:

<input type=text name=’emailusu‘ id=’emailusu‘ size=50>

Y al final del código de esta página:

<script type=”text/javascript”>
<!–

var completer3 = null;
window.addEvent(“load”,function(){

var resp = $(“emailusu“);
var indicator3 = new Element(‘div’).addClass(‘autocompleter-loading’).setHTML(”).setStyle(‘display’, ‘none’).injectAfter(resp);

completer3 = new Autocompleter.Ajax.Xhtml(resp, ‘xhr/auto_post.php‘, {
‘postData’: {html: 1},
‘onRequest’: function(el) {
indicator3.setStyle(‘display’, ”);
},
‘onComplete’: function(el) {

indicator3.setStyle(‘display’, ‘none’);

},
‘onSelect’:function(el){

var values = el.value.split(“@^^^^^@”);
el.value =  values[0];

$(“post”).value =  values[1];

},
‘parseChoices’: function(el) {
var value = el.getFirst().innerHTML;
el.inputValue = value + “@^^^^^@” + el.getLast().innerHTML ;

this.addChoiceEvents(el).getFirst().setHTML(this.markQueryValue(value));

}
});

});

//–>

</script>

Y el código AJAX para la búsqueda, en nuestro caso será:

<?php
include_once(“../src/utils.php”);

include(“../includebasededatos.php”);

$value = strtolower(trim(utf8_decode(($_POST['value']))));

if (isset($_POST['html']) && $_POST['html']){
$where_nivel = “”;
if(isset($_POST['nivel']) && !empty($_POST['nivel'])) $where_nivel =  “  AND nivel=’{$_POST['nivel']}’ “;
$link = mysql_connect($maquina,$user,$password);

$sql = “SELECT post, id FROM personascono WHERE post
REGEXP LOWER(‘^”. $value .”‘) $where_nivel  ORDER BY  post”;
//$rdb= @mysql_db_query($database,$sql,$link);
$rdb= ws_query($sql, $database);
while($row = mysql_fetch_array($rdb)){
$v = utf8_encode($row[post]);
echo (“<li><span>$v</span><span style=’display:none;’>{$row[id]}</span></li>”);

}

}
?>

Posted in comarca, documentacion | Leave a Comment »