Archivo de la Categoría PHP

Qué tal camaradas, en esta ocasión les pongo el libro totalmente en español que escribió nuestro Führer en el verano de 1924 cuando lo encerraron en prisión de Landsberg.

Mi Lucha - Mein Kampf en español Adolf Hitler
http://radioislam.org/historia/hitler/mkampf/pdf/spa.pdf

Minishowcase es una aplicación sencilla basada en PHP y Ajax que nos permite crear galerías de fotos facilmente, sin necesidad de configurar bases de datos o cambiar código.

Tan solo es necesario situar las fotografías en un directorio y ya dispondremos de un album, sin necesidad de crear thumbnails ya que Minishowcase se encarga de ello.

Disponible en varios idiomas, nos muestra las imágenes mediante lightbox y nos permite visualizarlas mediante un slideshow. A parte podemos compartir las galerías mediante enlaces permanentes.

Minishowcase

Pues les recomiendo un excelente Tutorial PHP con test dinámico de evaluación.

http://tutorialphp.net/

By Azielito

Como todos sabemos podemos poner el archivo de conexion a la base de datos en un archivo, y, entonces mandamos a llamarlo y listo. Ahora bien, que pasa si antes de hacer la conexion limpiamos todas las variables que pasan por GET o POST (o por cookie)? asi tendremos siempre limpias nuestras variables y evitamos ataques XSS y SQLi.

<?php
# Funcion para limpiar caracte-
# res que pudieran comprometer
# al servidor y/o al usuario
function limpia($var){
$var = strip_tags($var);
$malo = array(”\\”,”;”,”\’”,”‘”); // Aqui poner caracteres no permitidos
$i=0;$o=count($malo);
while($i<=$o){
$var = str_replace($malo[$i],”",$var);
$i++;
}
return $var;
}

# Funcion que aplica la funcion anterior
# para no tener que preocuparnos por
# ataques de XSS o SQLi
function LimpiarTodo($datos){
if(is_array($datos)){
$datos = array_map(’limpia’,$datos);
}else{
die(”<font color=#ff0000><b>Error:</b></font> La funcion <b>LimpiarTodo</b> debe contener un arreglo.”);
}
return $datos;
}
if($_POST){
$_POST =& LimpiarTodo($_POST);
}
if($_GET){
$_GET =& LimpiarTodo($_GET);
}

# FileName=”Connection_php_mysql.htm”
# Type=”MYSQL”
# HTTP=”true”
$hostname_DB = “localhost”; // El host del MySQL
$database_DB = “DataBase”; // Nombre de la base de datos
$username_DB = “usuar10″; // Usuario con l que te conectas
$password_DB = “th3pas5sz”; // Contraseña ñ_ñ
$serpub = mysql_connect($hostname_DB, $username_DB, $password_DB) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_DB);
?>

Ahora solo nos queda insertar ese archivo cuando hacemos alguna operacion en MySQL y listo! nos olvidamos de limpiar las variables una a una para evitar los ataques antes mencionados.

Para evitar ataques de RFI entonces en esta linea:

$malo = array(”\\”,”;”,”\’”,”‘”); // Aquí poner caracteres no permitidos

Agregamos los dos puntos ( “:” ) y la diagonal ( “/” ) si sabemos que nunca se usaran estos caracteres en los campos de nuestra base de datos quedaría así:

$malo = array(”\\”,”;”,”\’”,”‘”,”:”,”/”); // Aquí poner caracteres no permitidos

y quedamos seguros evitando que nos metan los “caracteres malditos”.

Si nuestra web la tenemos normal con el ‘HTTP’ pero si queremos redireccionarlos automaticamente a HTTPS (necesitas un certificado) con esto lo puedes hacer:

<?php
if(!$_SERVER['HTTPS']== ‘on’){
$nueva=”https://”. $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
header(”Location: $nueva”);
exit();
}
?>

Si implementas PHP y MySQL tienes aquí un código para evitar inyección SQL. Originalmente lo incluye el sistema SMF.

<?php
function addslashes__recursive($var){
if (!is_array($var))
return addslashes($var);
$new_var = array();
foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return $new_var;
}
$_POST=addslashes__recursive($_POST);
$_GET=addslashes__recursive($_GET);
$_REQUEST=addslashes__recursive($_REQUEST);
$_SERVER=addslashes__recursive($_SERVER);
$_COOKIE=addslashes__recursive($_COOKIE);
?>

Bueno ahora presento un script desarrollado en PHP para verificar la validez o no de una tarjeta de crédito de 16 digitos
El algoritmo utilizado es sencillo y no es ningún secreto, yo lo encontré navegando por la web -sinceramente no recuerdo donde, pero había documentado antes el script.
Un dato extra es que el primer dígito en las tarjetas de crédito de 16 cifras de la forma xxxx xxxx xxxx xxxx, nos indican del tipo de tarjeta que se tratan, es decir:

  • Si el primer digito es 3 pertenece a American Express
  • Si es 4 es Visa
  • Si es 5 es Master Card

Explico el código y despues muestro el script documentado:

Cada posición impar en la cifra la multiplicamos por 2. Si el resultado es menor a 9 nos quedamos con el valor actual, sino le restamos 9 al resultado obtenido. Reemplazamos en las posiciones impares del numero de tarjeta el resultado obtenido
Luego sumamos los 16 digitos, termino a termino. Si el resultado de la suma es multiplo de 10 y menor o igual a 150 el numero de tarjeta es valido, en caso contrario, es invalido.

<?
$numero = “6026850014437854″;    //numero de tarjeta de credito de 16 cifras
$nuevo = 0;
echo $numero;
if(isset($numero) && is_numeric($numero)){    //verificamos si la variable esta definida y si es un numero o una variable numerica
if(strlen($numero)==16){    //verificamos si la longuitud de la cadena es de 16 cifras.
for($i=0;$i<16;$i++){    //recorremos los 16 digitos de la tarjeta de credito
if(($i+1)%2 == 1){    //evaluamos las posiciones impares
$impar = $numero{$i}*2;    //multiplicamos por 2 las posiciones impares
if($impar < 9){            //evaluamos si la posicion impar es menor que 9
$valor = $impar;    //si es menor nos quedamos con el valor de la multiplicacion
}else{
$valor = $impar - 9;//sino, le restamos 9
}
$numero{$i} = $valor;    //reemplazamos el numero obtenido en la posicion impar evaluada
}
$nuevo+=$numero{$i};    //sumamos las 16 cifras (ya no es el valor original de la tarjeta, ya que se han reemplazado las posiciones impares)
}//fin del for
if( (($nuevo % 10) == 0) && ($nuevo <= 150) ){    //evaluamos si el resultado de la sumatoria es multiplo de 10 y menor oigual a 150
echo ” Tarjeta Valida”;        //si es verdadero la tarjeta es valida
}else{
echo ” Tarjeta no valida”;    //en caso contrario, la tarjeta no es valida
}
}//si no es longitud 16
}else{ //sino es numero
echo “<br>Nada”;
}
?>

aaaaa