Blogia
Angel

Informatica: Programación web

Bajar fotos de tuenti con firefox

Algunas fotos las deja descargar con una pestaña a la derecha. Sino hay muchos métodos, yo explicare con un complemento de Firefox llamado Adblock.

Descarga la aplicación: https://addons.mozilla.org/es-ES/firefox/addon/1865/

Al descargar/instalar reiniciamos firefox, y se abre una ventana gris que dice que nos subscribamos a las actualizaciones, la primera opción es buena, para aceptar busca la pestaña de abajo a la izquierda que diga algo así como subscribirse.

Luego abrir tuenti y buscar la foto que queramos, pulsar botón derecho encima de ella y elegir  “Adblock Image” o “ABP-Bloquear imagen…”. Aparecerá una ventana. Pulsa “Añadir filtro” o “Aceptar”.

Ahora cuando quieras una imagen de tuenti solo tendrás que dar a “Guardar imagen como…” como hacías hasta ahora en el resto de páginas web.

Redireccionar emails de gmail

Para redireccionar correos de tu cuenta de gmail a otra cuenta de correo entra en la configuración de cuenta en "Reenvío y correo POP", en "Reenvíos" marca la opción "Reenviar una copia a A (correo al que enviar copia)", elige las opciones del menú despegable que creas conveniente y guarda los cambios. Si quieres enviar correos desde la segunda cuenta como si fueras la de gmail (la primera cuenta puede ser de gmail o cualquier otro), entra en Configuración de la segunda cuenta si tambien es de gmail, "Cuentas", "Importar correo y contactos" para añadir una cuenta a la otra, o "Enviar mensage como" para cambiar quien le aparece que manda el mensage a quienes reciben tus correos.

Muchas cuentas de correo se configuran de manera parecida a esta, pero gmail segurisimo que es asi.

Ya se que no tiene que ver con programación web, pero si con internet y no se me ocurria en que grupo meter esto, asique ai se queda...

Detectar navegador de internet mediante Php

$_SERVER['HTTP_USER_AGENT'] sirve para crear una función que dice el nombre del explorador de internet que usa el cliente.

Podriamos hacer una función como la siguiente y llamarla de esta manera:

<?php echo NavegaI($_SERVER['HTTP_USER_AGENT']) ?>

La función seria:

<?php
function NavegaI($nav_usu) {
$navegadores = array(
'Mozilla Firefox'=> '(Firebird)|(Firefox)',
'Mozilla'=>'Gecko',

'Opera' => 'Opera',
'Galeon' => 'Galeon',
'Lynx' => 'Lynx',
'Netscape' => '(Mozilla/4.75)|(Netscape6)|(Mozilla/4.08)|(Mozilla/4.5)|(Mozilla/4.6)|(Mozilla/4.79)',
'Konqueror'=>'Konqueror',

'Internet Explorer 7' => '(MSIE 7.[0-9]+)',

'Internet Explorer 8' => '(MSIE 8.[0-9]+)',

);
foreach($navegadores as $navegador=>$pattern){
if (eregi($pattern, $nav_usu))
return $navegador;
}
return 'Desconocido';
}
?>

Podemos poner todos los exploradores que queramos siempre y cuando sepamos el nombre que nos dara al preguntarle, por ejemplo, preguntandole a las diferentes versiones de Internet Explorer dirá "MSIE", Firefox dirá "Firebird", o "Firefox"...


Validar cadenas de texto en asp.net

Os comento dos tipos de validación, la primera es comprobar que el campo no se ha dejado en blanco:


<asp:RequiredFieldValidator runat="server" ControlToValidate="ID del texto a validar" Display="Dynamic"> Texto que aparece si no valida

</asp:RequiredFieldValidator>

La segunda comprueba que el texto coincide con un tipo de cadena elegida por ti:


<asp:RegularExpressionValidator ControlToValidate="ID del campo de texto a validar" ValidationExpression="Expresión de validación" Display="Static" runat=server> Texto que aparecera si no valida </asp:RegularExpressionValidator>

Ambos permiten font-size, font-type, y similares, ID, y otras alternativas.

En el 2º, la expresión de validación se debe poner de la siguiente manera:

"(^([Simbolos]{Numero de veces})$)"

En simbolos se pueden poner numeros, letras, signos especiales... y si quieres poner de un simbolo a otro separa el 1º y ultimo por -. Ejemplo: 1-9

En numero de veces si pones un numero significa que tiene que haber ese numero exacto de símbolos, si pones dos números, separados por coma, el 1º es el numero mínimo de caracteres de la expresión, el 2º el numero máximo, que si se deja en blanco es infinito.

Si se quieren poner varias cadenas seguidas se separan por -, y englobándolas todas en paréntesis. Ejemplo:(^([0-9]{8})-([A-Z]{1})$)

Validar ccc con php

El Codigo de Cuenta Cliente consta de 4 numeros de entidad, 4 numeros de oficina, 2 digitos de control (el primero valida los numeros de entidad y oficina, y el segundo valida el numero de cuenta), y 10 digitos de numero de cuenta.

Necesitamosdos funciones, una que valide el numero, y otra que compruebe que el numero de control corresponde con ese numero:


function ccc_ok(&$ccc)

{

  global $digitos;

  $ccc=trim($ccc);

  $patron_ok=ereg($s="^(${digitos}{4})-?(${digitos}{4})-?([0-9 *])([0-9 *])-?($digitos{10})$",$ccc,$v);

  if (!$patron_ok)

    return false;

  $dc1=obtener_digito($v[1].$v[2]);

  $dc2=obtener_digito($v[5]);

  if ($v[3]==" " || $v[3]=="*") $v[3]=$dc1;

  if ($v[4]==" " || $v[4]=="*") $v[4]=$dc2;

  if ($v[3]==$dc1 && $v[4]==$dc2)

  {

    $ccc=$v[1].$v[2].$v[3].$v[4].$v[5];

    return true;

  } else return false;

}





function obtener_digito($valor){

  $valores = array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);

  if (strlen($valor)==8) $valor="00".$valor;

  $control = 0;

  for ($i=0; $i<10; $i++)

    $control +=$valor[$i] * $valores[$i];

  $control = 11 - ($control % 11);

  if ($control == 11) $control = 0;

  else if ($control == 10) $control = 1;

  return $control;

}

Validar NIF con php

Necesitamos una funcion que compruebe el numero en si, que llame a otra que compruebe la letra:


function nif_ok(&$nif) {

  $nif=trim($nif);  //supresion de blancos

  //$letras="T|R|W|A|G|M|Y|F|P|D|X|B|N|J|Z|S|Q|V|H|L|C|K|E"; //letras permitidas en el nif

  $patron_ok=eregi("^([0-9]{8})-($letras?)$",$nif,$v); //comprobando el patron de nif

  if ($patron_ok) {

    if (!$v[2])

      $nif.=$v[2]=letraNIF($v[1]);

   if (letraNIF($v[1])!=$v[2]){

   return false;    //si la letra es incorrecta devolver no valido

   } else {

     return true;    //si la letra es correcta, validar

   }

  } else {

return false;     //si el patron no es correcto, devolver falso

  }

}

 


function letraNIF($nif){

return substr("TRWAGMYFPDXBNJZSQVHLCKE",$nif%23,1);

}

Validar fecha con php

Función que dice si una fecha es valida o no, necesitamos una principal, que vea los dias que tiene cada año, mes... y otra que diga que años son bisiestos.


function fecha_ok(&$fecha) {

  $fecha=trim($fecha);  //supresion de blancos

  $patron_ok=eregi("^([0-9]{1,2})[-/.]([0-9]{1,2})[-/.]([0-9]{4})$",$fecha,$v);

  if (!patron_ok)

    return false;

  else {

    $dm=array(0,31,28,31,30,31,30,31,31,30,31,30,31);  //dias del mes

    $d=(int)$v[1]; $m=(int)$v[2]; $a=(int)$v[3];

    if (bisiesto($a)) $dm[2]=29;

    if ($d<1 || $d>$dm[$m]) return false;

    if ($m<1 || $m>12) return false;

    return true;

  }

}

 


function bisiesto($anio) {

  return $anio%400? ($anio%4? 0:1): 0; //Los años bisiestos son cada 4 años, excepto los que hacen 400

}

Crear/Cargar Cookies en asp.net

Existen muchos metodos, los que más me gustan:

-1º: Es automatico, pero solo puedes dar un valor a la cookie

Crear Cookie: 

FormsAuthentication.SetAuthCookie("Valor de la Cookie", False)  'Si pones una variable no pongas ""

Leer Cookie:

User.identity.name

 

-2º: Elijes nombre de la Cookie, y de la variable, puedes poner en una sola cookie tantas variables como quieras,y puedes crear tantas cookies como quieras.

Crear Cookie:

Response.Cookies("Nombre de la Cookie")("Nombre de la variable") = "Valor de la variable" 'Si pones una variable no pongas ""

Leer Cookie:

Response.WriteRequest.Cookies("Nombre de la Cookie")("Nombre de la variable")

Validaciones basicas con php

Validar cadena de letras:

function alfa_ok($alfa){
$alfa=trim($alfa); //Supresion de blancos
return ereg("^[a-zA-ZñÑáéíóúÁÉÍÓÚüÜ]{1,}$",$alfa);
}

Validar cadena de numeros:

function num_ok($num){
$num=trim($num); //Supresion de blancos
return ereg("^[0-9]{1,}$",$num);
}

Validar cadena alfanumerica:

function alfanum_ok($alfanum){
$alfanum=trim($alfanum); //Supresion de blancos
return ereg("^[0-9a-zA-ZñÑáéíóúÁÉÍÓÚüÜ]{1,}$",$alfanum);
}

Validar cadena alfabetica, y caracteres especiales habituales
function alfasim_ok($alfasim){
$alfasim=trim($alfasim); //Supresion de blancos
return ereg("^[a-zA-ZñÑáéíóúÁÉÍÓÚüܺª/@$€ ,._;:!¡?¿]{1,}$",$alfasim);
}

Validar cadena alfanumerica, y caracteres especiales habituales
function alfanumsim_ok($alfanumsim){
$alfanumsim=trim($alfanumsim); //Supresion de blancos
return ereg("^[0-9a-zA-ZñÑáéíóúÁÉÍÓÚüܺª/@$€ ,._;:!¡?¿]{1,}$",$alfanumsim);
}

 

trim(); suprime los espacios en blanco tanto a la izquierda como a la derecha.

ereg(); comprueba que la variable que leintroduces al final coincide con los caracteres que pones. Si usaramos eregi(); no necesitariamos poner mayusculas dentro, ya que eregi lee mayusculas y minusculas como un mismo simbolo.

El contenido de ereg(), o eregi() debe ir en "", los simbolos ^ y $ significan principio y fin de cadena, no son obligatorios, pero recomiendo ponerlos. Los simbolos que quieres que haya en la expresión que validas se ponen de la siguiente manera: [Simbolos que quieras validar]{Nºminimo de caracteres, Nºmaximo de caracteres}. Si el numero minimo lo dejas en blanco es 0, si dejas el maximo en blanco es infinito, si solo pones un numero sin coma significa que quieres obligatoriamente ese numero de caracteres. Ejemplos:

ereg([123]{,5}); Significa que quieres un numero compuesto por unos, doses, y treses, de 0 a 5 caracteres.

Funciones basicas php

La primera función incrementa en 1 la variable que introduces, ejecutandola X veces le sumaras X, es un poco tonteria, pero más o menos ya veis como va la cosa... 

//Función que incrementa una variable
function mas (&$a){
$a = $a + 1;
}

Las siguientes sirven para que el codigo html generado por el fichero.php sea legible correctamente, añadiendo la función a los (echo "";):

//Función que genera espacios en blanco
function s($n) {
    return str_repeat(" ",$n);
}

//Función que genera tabuladores
function t($n) {
    return str_repeat("t",$n);
}

//Función que genera Intros

function n($n) {
    return str_repeat("n",$n);
}

 

Return indica que se va a devolver, str_repeat indica el primer simbolo repetido tantas veces como diga el 2º,  nosotros le pedimos que escriba espacios " ", y tabuladores "/t", tantas veces como diga la variable que le damos.

Para usar estas funciones:

echo t(2)."<h1>Por ejemplo</h1>n";

Menu con imagenes cambiantes con javascript

Se puede hacer de muchas maneras, pero yo usare un script tal que éste:


<script language="JavaScript">

<!--

imagen1=new Image

imagen1.src="1.jpg"

imagen2=new Image

imagen2.src="2.jpg"

-->

</script>

Básicamente llama a dos imágenes.

Y usaré también una tabla con enlaces, y las imágenes:


<table>
  <tr>
    <td><a href="http://angelm.blogia.com/" onMouseOver="document.a.src=imagen2.src" onMouseOut="document.a.src=imagen1.src">Mi Blog</a></td>
    <td><img src="1.jpg" name="a" onMouseOver="document.a.src=imagen2.src" onMouseOut="document.a.src=imagen1.src"/></td>
  </tr>

   <tr>
    <td><a href="http://guerrerosdelaverno.mundoforo.com/index.php" onMouseOver="document.b.src=imagen2.src" onMouseOut="document.b.src=imagen1.src">Mi Foro</a></td>
    <td><img src="1.jpg" name="b" onMouseOver="document.b.src=imagen2.src" onMouseOut="document.b.src=imagen1.src"/></td>
  </tr>

  <tr>
    <td><a href="http://www.fotolog.com/angelmmc" onMouseOver="document.c.src=imagen2.src" onMouseOut="document.c.src=imagen1.src">Mi Fotolog</a></td>
    <td><img src="1.jpg" name="c" onMouseOver="document.c.src=imagen2.src" onMouseOut="document.c.src=imagen1.src"/></td>
  </tr>
</table>

Por supuesto podéis cambiar los enlaces y poner los que queráis.... poned en las imagenes el nombre de vuestras fotos, y con éste código el efecto resultante es que al pasar el ratón tanto por el enlace, como por la foto, ésta cambia, y al quitar el ratón de encima, vuelve a ser la imagen de antes.

Para que funcione hay que poner onMouseOver y onMouseOut en el enlace y la imagen,
y cada evento debe llamarse de manera diferente(aquí uso a, b, c).
Los enlaces no necesitan nombre, pero las imágenes si.
tr son filas, td son las columnas de la tabla.
Si solo colocas onMouseOver la imagen cambia al poner el ratón encima, pero no vuelve a su original.
No creo que haya muchas dudas más, pero si las hay solo tenéis que preguntar ^^ 

Obtener pais de usuario por php

Necesitamos una función que lea la IP del usuario, y de ella saque la localización, nos serviría una como esta:

//Obtener IP:
$_SERVER["HTTP_CLIENT_IP"]!=""?$ip=$_SERVER["HTTP_CLIENT_IP"]:
$ip=$_SERVER["REMOTE_ADDR"];

//Obtener país
function pais($ipaddress){
$url = "http://ip-to-country.webhosting.info/node/view/36";
$inici = "src=/flag/?type=2&cc2=";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST,"POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "ipaddress=$ipaddress");
ob_start();
curl_exec($ch);
curl_close($ch);
$cache = ob_get_contents();
ob_end_clean();
$resto = strstr($cache,$inici);
$pais = substr($resto,strlen($inici),2);
return $pais;
}
//Poner en funcionamiento la función
$pais = strtolower(pais($ip));

Script que calcula la letra de un DNI

Su funcionamiento es bastante basico, la letra del DNI se calcula por 23, y según el resto el resultado es una letra de ésta lista "TRWAGMYFPDXBNJZSQVHLCKET".
Necesitaremos un script como:

<script>

function letradni ()

{

cadena="TRWAGMYFPDXBNJZSQVHLCKET" //Letras DNI

posicion = formulario.dni.value % 23 //Hallar el resto del DNI entre 23

letra = cadena.substring(posicion,posicion+1) //Hallar letra

document.formulario.dni.value=formulario.dni.value+" - "+letra //Imprimirlo por pantaya

}

</script>


Dentro de un formulario necesitariamos un campo que pidiera el DNI, por ejemplo:

<input type="text" name="dni" maxlenght="12" size="12">


Y un botón para enviarlo, que llame a la función:

<input type="button" value="OK" language="JavaScript" onclick="letradni()">

Script que marca todos los checkbox de un form

Necesitamos un script como este:

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">

<!--

function marca(){ //Marca todos al marcar

  for (i = 0; i < document.forms[0].elements.length; i++)

    {

    document.forms[0].elements[i].checked = true;

    }

  }

function desmarca(){ //Desmarca todos al desmarcar

  for (i = 0; i < document.forms[0].elements.length; i++)

    {

    document.forms[0].elements[i].checked = false;

    }

  }

-->

</SCRIPT>



Donde vallamos a colocar la casilla de marcar todo poner:

<INPUT TYPE="CHECKBOX" NAME="jscheckall" onClick="if (this.checked) {marca()} else {desmarca()}" VALUE="">


Y en las casillas que quieras que sean marcadas y desmarcadas deves ponerles de valor un numero consecutivo, ejemplo: VALUE="1", VALUE="2", VALUE="3", VALUE="4", ... Ejemplo:

<INPUT TYPE="CHECKBOX" NAME="opcion" VALUE="1">

Reloj con javascript

Cogemos éste código en head:


<script languaje="JavaScript">

    function mueveReloj(){

        momentoActual = new Date();

        hora = momentoActual.getHours(); //Tomamos la hora

        minuto = momentoActual.getMinutes(); //Minutos

        segundo = momentoActual.getSeconds(); //Segundos

        document.form_reloj.reloj.value=hora+":"+minuto+":"+segundo;

        setTimeout("mueveReloj()",10); //Hacemos funcionar, y mostrar por pantalla el reloj

     }

</script>

Cargamos en body: <body onload="mueveReloj()">

Y donde queramos poner el reloj ponemos un formulario como éste:


<form name="form_reloj">

<input type="text" name="reloj" size="10" readonly="true" />

</form>

Lo ponemos dentro de formulario, por el cuadro de texto que se necesita.

(Roll Banner) Imagenes con enlaces que cambian, con javascript

Es un ejemplo de como poner el típico banner publicitario, necesitamos un código como éste en head:


<script language="Javascript" type="text/javascript">

<!--

adImages = new Array("Imagen1.jpg","Imagen2.jpg","Imagen3.jpg") //Pon tantas imagenes como quieras, entre "", y separadas por comas.

adURL = new Array("Web1.com","Web2.com","Web3.com") //Tantas Webs como imagenes, y en el mismo orden.

thisAd = 0

imgCt = adImages.length



function cambia() {

if (document.images) { //Función que cambia las imagenes

if (document.adBanner.complete) {

thisAd++

if (thisAd == imgCt) {

thisAd = 0

}

document.adBanner.src=adImages[thisAd]

}

   setTimeout("cambia()", 3 * 100)

   }

}



function web() { //Funcion que cambia las webs

document.location.href="http://www." + adURL[thisAd]

}



-->

</script>

Con body deveremos cargar la funcion cambia de esta manera: <body onload="rotate()">

Y donde queramos poner el banner deberemos poner un enlace como éste:


<a href="javascript:web()"><img src="Imagen1.jpg" width="x" height="x" name="adBanner" border="0" alt="ad banner" /></a> //En src poner una de las imagenes del banner, y en width y height poner el tamaño que quereis que tenga el banner.

Abrir/Cerrar ventanas de navegador con javascript

Necesitariamos un script como éste:


<script language="Javascript" type="text/javascript">

<!--

newWindow = null

function openWindow() { //Esta funcion abre la ventana

newWindow = window.open("Pagina Web", "newWin", "toolbar=no,location=nos,scrollbars=no,width=640,height=480") //En "Pagina Web" escribe el nombre de la web que quieras abrir en nueva ventana, "newWin" indica que será en nueva ventana, "toolbar=no,location=nos,scrollbars=no" indica sin barras (se puede poner a yes), "width=640,height=480" indican el tamaño de la ventana

}

function closeWindow() { //Esta funcion cierra la ventana

if (newWindow && !newWindow.closed) {

newWindow.close()

}

}

// -->

</script>

Luego en body tendriamos que poner:


<a href="javascript:openWindow()">Abre una ventana</a>

<a href="javascript:closeWindow()">Cierrra una ventana</a>

Donde queramos que aparezcan los enlaces para abrir y cerrar la ventana.

Impedir el uso del boton derecho en nuestra web con javascript

Esta es otra forma de proteger el contenido de nuestra web como: Proteger contenidos de nuestras webs en html.

Pondremos en head éste script, que luego no hará falta cargarlo en body siquiera.

<script language=JavaScript>

<!--

var message='No disponible';

function clickIE() {if (document.all) {alert(message);return false;}}
//Mostrar mensage de error
function clickNS(e) {if

(document.layers||(document.getElementById&&!document.all)) {
//Mostrar mensage de error
if (e.which==2||e.which==3) {alert(message);return false;}}}

if (document.layers)

{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}

else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}

document.oncontextmenu=new Function('return false')
//Esta linea es la que impide usar el boton derecho del raton, devolviendo de valor falso en vez de verdadero al usar dicho botón
// -->

</script>








Enlazar una pagina al pasar el raton por encima de algo

Usariamos la opción onMouseOver, que sirve para que sucedan cosas al pasar el raton por encima del objeto al que le pongamos la opción, para redirigir a otra web seria onmouseover="parent.location='Pagina Web'".

Ejemplos:

-Poner un enlace que se active al pasar por encima:


<a href="" onmouseover="parent.location='http://angelm.blogia.com/'">Mi blog </A>

-En una imagen:


<img src="http://img54.imageshack.us/img54/8387/angelgi9.gif" alt="Angel" onmouseover="parent.location='http://angelm.blogia.com/'"/>

Validador de mails en javascript

Este es un programilla muy malo, pero con el que se puede empezar a aprender sobre validaciones(te pide un codigo, y si cumple las cualidades que le pides te lo da por bueno, y si falla te dice en que). El script seria algo asi:


<script language="Javascript" type="text/javascript">

<!--

var posi1=-1;

var posi2=-1;

var conta;

var dominio;

var dominio2;

var usuario;

var mail;



mail=prompt("Correo:",""); //Pide el correo



for(conta=0;conta<mail.length;conta++){

  if(mail[conta]=="@"){

     posi1=conta;

  } //Busca la @ en el correo

}



if(posi1>0){

usuario=mail.substring(0,posi1-1); //Selecciona la parte anterior a @ como usuario

dominio=mail.substring(posi1+1,mail.lenght);} //La parte posterior como dominio

else{

document.write("Direccion de correo incorrecta, no tiene @")} //Si no hay @dice error



for(conta=0;conta<mail.length;conta++){

if(mail[conta]=="."){

posi2=conta;}

} //Busca el . del correo



if(posi2>usuario.length){

dominio=mail.substring(posi1+1,posi2-1);

dominio2=mail.substring(posi2+1,mail.length);} //Limita la longitud del dominio

else{

document.write("Direccion de correo incorrecta, no tiene .")} //Sin . da error



if(usuario.length>0 && dominio.length>0 && dominio2.length>=2 && dominio2.length<=4){

document.write("<h1>Direccion de correo correcta</h1>")} //Si lo cumple todo es correcto

else{

document.write("<h1>Direccion de correo incorrecta, dominio incorrecto</h1>")} //Si no lo cumple da error



-->

</script>

Este script es muy malo, porque por ejemplo correos como aaaa@aaa.aaa te los da por validos, pero ya seria jugar con las diferentes variables, y ponerle más restricciones para validar solo lo que nos interese ^^