Tag Archive for: PHP

Diferencias entre envio GET y POST

Categories: PHP - Tags: ,

Este es un tema bastante básico pero ya que han habido varias consultas al respecto me pareció interesante comentarlo y sobre todo explicar como aplicarlo, por cierto los conceptos usados aquí son iguales cuando se usa una web modular.

Método GET

Este método envia las variables dentro de la propia URL (dirección) de la página, concatenadas(unidas) por ampertands(&) quedando algo así:

1
http://www.mipagina.com/index.php?page=mia&variable2=valor2&variable3=valor3......

Hasta ahí muy interesante, seguro ya lo leiste mil veces pero ¿para qué sirve eso? pues lo bueno es que podemos enviarle variables a PHP desde links simples sin necesidad de usar formularios o podríamos guardar estas cadenas en un mapa del sitio y google indexaría nuestras busquedas, muy util tambien para crear esos botones de editar donde queremos que se envie el ID del objeto para editar, si fuera mySQL sería algo así.

1
echo '<a href="editar.php?id='.$row[miId].'">Editar</a>';

Método POST

Este método sólo se puede usar con formularios, y la información no se envía por la URL sino que es invisible al usuario (eso en teoría porque usando firebug podríamos ver que se envía en realidad).
¿Para qué sirve POST?
pues para enviar grandes campos de texto, subir imágenes, para no distorcionar nuestra URL amigable con un colección de variables.

¿Cómo las envío?
Pues así:

1
2
3
<form name="miformulario" action="mipagina.php" method="POST">
 <input type="text" size="20" name="mivariable1">
</form>

¿Cómo recibo las variables?

Pues depende si usamos GET o POST, quedaría algo así

1
2
echo $_GET['mivariable']:
echo $_POST['mivariable']:

Variables en una web modular

Es exactamente igual que si no fuera modular, tengamos presente que los valores GET y POST se comparten entre todos los archivos que fueron incluidos en la web modular ya que estos se unen como un todo, de tal forma que si envio esto:

1
2
3
<form name="miformulario" action="index.php?page=mipagina" method="POST">
 <input type="text" size="20" name="mivariable1">
</form>

Puedo invocar a la variable POST en cualquiera de los archivos que la componen, header, footer y por supuesto contenido

Ofuscador de código para PHP

Categories: PHP - Tags: ,

Una vez que acabamos de programar nos gustaría que nuestro código no se ande replicando y siendo usado por otros, robando nuestro trabajo sin embargo como PHP no se compila, nuestro código fuente queda desprotegido.

He probado algunos ofuscadores de código que hacen el código muy ilegible y dificil de entender, ojo eso no es igual que codificar simplemente lo hacen poco comprensible. Este muy sencillo ofuscador online me parece genial para evitar que pirateen las clases que conforman nuestro script, pueden dare un vistazo aqui

Requiere el uso de la librería gzip, la cual la tienen prácticamente todos los servidores en Internet así que por ahí no hay problemas, veamos un ejemplo:
Código Original

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class MySQL{
private $conexion;
private $total_consultas;
public function open(){
if(!isset($this->conexion)){
    $this->conexion = (mysql_connect(_host,_user,_password)) or die(mysql_error());
    mysql_select_db(_database,$this->conexion) or die(mysql_error());
}
}
public function consulta($consulta){
    $this->total_consultas++;
    $resultado = mysql_query($consulta,$this->conexion);
    if(!$resultado){
        echo 'MySQL Error: ' . mysql_error().'<br>'.$consulta;
        exit;
    }
    return $resultado;
}
public function fetch_array($consulta){
    return mysql_fetch_array($consulta);
}
?>

Codigo Ofuscado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Este archivo es protegido por la ley del derechos de propiedad literaria. La ingenieria inversa de este codigo se prohibe estrictamente.
eval(gzinflate(base64_decode('
dZJNTsMwEIXXqdQ7DFKkOGroAWhJV+xggTiA5TgT
xVKI0/EEGiHujp20tIRW8sKen2/es73LF9tdV3fL
hW6Uc/AyvL0+fy0XHZkPxQixti0ejG03FzG2rBrp
M65vWLmQ6ovGaKj6VrMvBtthK1LPMZW4M84hi5hr
4+7zEy8N2WgWhEcQ74Pbj/AWNQtZW8eZ7B1SJjuv
8NNSmaZgCUqDx2IksiTS1AuJpojDxnfLshCyVKwK
5TCbC7jJ+B7X3NLJrohPu0sHsytZrYKWmHA8ltYb
m8bse6ThjPgnKrSFOzu3jlMi1LWFZHwdeApSHyCB
NfzRvk62BeXJ+pe+GTsPhsPGW4oIuacWzvDNVasV
sq6lIlLDzO0RMI29XjYhd+Ff/QA=
'
)));
?>

Creo que queda lo suficientemente incomprensible o no? :)

Deprecated Functions Zencart con Wamp 2

Categories: PHP, zencart - Tags:

Hace poco formatee mi disco duro y aproveché para instalar versiones últimas de todo incluyendo Wamp pero me di con la sorpresa que varias páginas que antes funcionaban ahora daban varios mensajes de error como este en Zencart

Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\wamp\www\zencart138a\includes\application_top.php on line 18

Lo que pasa es que Wamp 2 viene con PHP 5.3 y en esta nueva versión varias funciones de PHP ya no existen, afortunadamente hay un parche que arregla Zencart sin muchas complicaciones, lo puedes bajar AQUI, luego lo descomprimes y sobreescribes los archivos en tu Zencart.

Ojo este parche sólo debe ser utilizado si tu servidor usa PHP 5.3 de lo contrario ocasionará problemas.

Mitos y preguntas sobre web modular PHP

Categories: PHP - Tags: ,

Usualmente recibo comentarios y correos preguntándome algunos detalles sobre la web modular, para qué sirven, cómo funcionan, ventajas, etc. Así que a idea de este post es ir respondiendo a estas dudas, si tienen alguna otra sería bueno que la pongan para ir actualizando el post y así todos aprendemos.

Bueno vamos al grano.


¿La página modular se recargará totalmente cada vez que clickeo un link?

Si exactamente lo va a recargar todo nuevamente. ¿Eso es mas lento?(imagino que tambien te preguntaras eso) No necesariamente ya que si maquetamos adecuadamente todo esta en cache (incluso archivos flash) y la página cargará sin problemas.

¿Los frames son mejores que una web modular?

Si bien es cierto podemos poner el encabezado, pie de página y otros elementos en frames y evitar que se recargue toda la página y esto puede ser más rápido, las desventajas superan a esa ventaja:

  • La página con frames puede distorcionarse con la aparición de barras de desplazamiento o si no aparecen estas, ciertos contenidos podrían estar cortados, eso es algo no sucederá nunca con web modular
  • Creo que el más grave problema con frames es que google no va a indexar nuestro sitio web y si no apareces en los buscadores es prácticamente como si no existieras, dificilmente tendrás nuevos visitantes
  • Los frames son tecnología desfasada, muy antigua aunque admito que combinados con los modernos modalbox pueden hacer cosas muy utiles
  • Los frames consumen más memoria ya que son varias páginas independientes abiertas todas juntas
  • Una página modular permite compartir recursos y clases a través de la página(esa su mayor ventaja), mientras que los frames actúan de forma separada

¿Cómo envío formularios en una web modular?

Supongamos que tu formulario esta en la dirección index.php?page=formulario, tu formulario sería

1
<form name="miformulario" method="post" action="index.php?page=formulario">

Eso enviará los datos a esa misma página pero ojo no puedes usar el método GET o este sobreescribirá la variable page, sin embargo se puede salvar ese inconveniente asi:

1
2
<form name="miformulario" method="get" action="index.php">
<input type="hidden" name="page" value="formulario">

¿Qué ventaja tiene usar una web modular?

La web modular no sólo sirve para tener un sólo encabezado, menu y pie de página común a todas las páginas de nuestro sitio ese es el uso más básico, los verdaderos alcances van al momento de usar una programación OOP (programación orientada a objetos) ya que las clases al formar parte de la web modular podrán ser compartidos por todo el sitio, podemos tener una sóla conexion de base de datos que sea universal a todo el sitio y así cuando cambies de servidor sólo alterarás un único archivo.
También es muy util esta web modular para crear sitios con varios idiomas

¿Se puede crear una web modular con elementos ajax?

Si, aunque yo recomendaría limitarlo sólo a algunos elementos para no perder indexación por parte de google como en este ejemplo

Web Modular PHP AJAX parte 2

Categories: AJAX, javascript - Tags: , , ,

En la primera parte de este tutorial expliqué como hacer funcionar una web modular donde el contenido cargara dinamicamente sin recargar la página usando AJAX sin embargo sólo funcionaba con links del menú y no con links que estuvieron dentro de las páginas cargadas.

Hacer funcionar ajax en links internos

Ese código funciona con el menu pero para que funcione incluso en links de páginas cargadas usando AJAX debemos usar el evento LIVE de jquery para ello basta modificar una línea de código.

1
2
3
4
5
$('.ajaxmenu').livequery('click',function(){
            var loadUrl = $(this).attr('href');
              $("#contenido").html(ajax_load).load(loadUrl);
            return false;
     });

¿Cómo hago funcionar el código si uso anclas?

Esto es más complicado ya que hay que calcular la ubicación de las anclas y generar un scroll

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<script language="javascript">
$(document).ready(function(){
$.ajaxSetup ({
    cache: false
});
var ajax_load = "<img src='img/load.gif' alt='loading...' />";
$(".ajaxmenu").live("click", function(){
    myUrl= $(this).attr('href');
    if (myUrl.match('#')) {
          var myAnchor = myUrl.split('#')[1];
          /*Ahora arreglamos el URL - para evitar problemas en ie6*/
          var loadUrl = myUrl.split('#')[0];
    }else{
        var loadUrl = $(this).attr('href');
    }
    $("#contenido").html(ajax_load).load(loadUrl,function(){
        if (myUrl.match('#')) {
        /*Calculamos la distancia entre el anchor y la pagina y animamos*/
          var targetOffset = $("a[name='"+myAnchor+"']").offset().top;
          $('html').animate({scrollTop: targetOffset}, 400);
        }
     }
    );
    return false;      
});
});
</script>