Pequeños trucos en PHP

Iniciado por grax96, Agosto 01, 2012, 12:05:26 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 01, 2012, 12:05:26 PM Ultima modificación: Marzo 27, 2014, 05:46:45 PM por Expermicid
Pues eso, quería crear este post para ir poniendo pequeños truquillos, aunque sean tonterias, pero que nos pueden ayudar en ciertos momentos cuando programamos.


Evitar la caché de los navegadores
A veces podemos encontrarnos el problema de que una página no nos actualiza el contenido porque está en caché. Se puede solucionar modificando las cabeceras

Código: php
<?php
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); // disable IE caching
header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );
?>


Contador en SQL
Puede ser que necesitemos un contador (de lecturas, por ejemplo) de una noticia guardada en SQL. Si queremos aumentar este valor, muchos habríamos leído el campo, lo hubieramos incrementado y luego hubieramos hecho el UPDATE. Pues hay una forma mucho más fácil, segura y limpia de hacerlo y con solo una SQL.

Código: php
<?php
mysql_query('UPDATE trucos SET lecturas = lecturas + 1 WHERE id=12 LIMIT 1');
?>


Intercambiar colores en X filas
A la hora de hacer listados, puede darse el caso que la legibilidad de las filas no sea buena, por lo tanto sera conveniente usar dos colores diferentes de background para cada fila, de manera que se vayan intercalando y la legibilidad sea buena. Como hacemos esto? Pues una de las maneras más elegantes es usar el operador ternario. Ahí va:

Código: php
<?php
$color = "#000000";
$i = 0;
while ($i < 10)
{
$color = ($color == "#000000";)? "#FFFFFF" : "#000000";
echo $color."<br>";
$i++;
}
?>


Saber si un año es bisiesto

Código: php
<?php
function Bisiesto($anyo)
{
return checkdate(02,29,$anyo);
}
?>


... y asi funciona ...

Código: php
<?php
$actual = date("Y";);
$sig = $actual+1;
if(Bisiesto($actual)){
echo $actual." es bisiesto<br>";
}else{
echo $actual." no es bisiesto<br>";
}

if(Bisiesto($sig)){
echo $sig." es bisiesto<br>";
}else{
echo $sig." no es bisiesto<br>";
}
?>


Forzar descarga
Forzar la descarga de un archivo desde PHP en un navegador

Código: php
header("Content-type: application/force-download";);


Validar email
Una función para validar tu email (incluyendo subdominios).

Código: php
<?php
function ValidaMail($v_email) {
if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@+([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$", $v_email )){
return true;
}
else{
return false;
}
}
?>


Asegurando contra Inyección SQL
Es una función que incluye el SMF para evitar inyección SQL:

Código: php
<?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);
?>


Checar headers
Chequea si ya se enviaron cabeceras y en que parte.


Código: php
<?php

// Si no se han enviado cabeceras, enviar una
if (!headers_sent()) {
header('Location: http://www.example.com/');
exit;
}

// Un ejemplo del uso de las parametros opcionales archivo y linea, a
// partir de PHP 4.3.0.
// Note que $nombre_archivo y $num_linea son pasados para su uso posterior.
// No les asigne valores con anterioridad.
if (!headers_sent($nombre_archivo, $num_linea)) {
header('Location: http://www.example.com/');
exit;

// Probablemente quiera producir un error aqui.
} else {

echo "Las cabeceras ya fueron enviadas en $nombre_archivo en la linea " .
"$num_linea
No es posible redireccionar, por ahora por favor " .
"pulse este <a href=\"http://www.example.com\">enlace</a> en su " .
"lugar
";
exit;
}

?>


Bueno amigos eso fue todo por hoy :D