API Needish PHP – Cliente para conectarse

Needish

Esta es mi ayuda para la comunidad Needish, una comunidad para recibir ayudas frente a necesidades que tengamos.

He creado un cliente para conectarse a la API para desarrollar aplicaciones basadas en PHP. Esto lo he realizado sin ningun interes economico, sino que lo he realizado por AMOR al arte para esta excelente aplicacion.

Si deseas descargar el cliente para conectarse API realizalo aqui

Si deseas ver la documentacion para conectarse a la API realizalo aqui

Ejemplos:

require_once('needish.class.php');
// Api publica
 $needish = new NeedishPublico("Mi codigo API");
 print_r($needish->buscarNecesidadTexto("PHP"));
 print_r($needish->buscarNecesidadTag("PHP"));
 print_r($needish->ultimasNecesidades());
// Api Privada
 $needish = new NeedishPrivado("Codigo","Correo","Pass");
 print_r($needish->nuevaNecesidad("Ejemplo API","Den gracias"));
 print_r($needish->necesidadesAyudadas());

Espero que sea utilizada por los usuarios, y frente a feedbacks, por favor realizarlos en los comentarios de mi BLOG.

Mucha suerte y dale un buen uso a la API que nos brinda esta comunidad.

Agradecimientos:

  1. Pablo Viojo, El Chivito Canadiense :)
  2. Miguel Michelsongs , el master ruby on rails
  3. La comunidad Needish por soportarme

Breadcrumb cakephp helper facilito y limpio

Cuantas veces no has tenido que programar a cada pagina un:

Inicio >> Paginas >> Orden >> Editar

Yo varias veces y lo cuento, a travez de un codigo SUCIO, limitando así­ cualquier modificacion de estilos, ya que debia realizarlo pagina por pagina.

Cree un pequeño helper para CakePHP, en el cual lo agregas a tu controlador como helper, y luego de forma sencilla te manejar.

<?php
/*
@desc: Helper for BreadCrumb
@idea: Marie Anne Mertens <mmertens@atobiz.com>
@developer: Fabian Ramirez <framirez@atobiz.com>
@demo in the view:
$crumb->add('News', '/admin/news); // With URL
$crumb->add('Edit'); // Without URL
echo $crumb->html();
*/

class CrumbHelper extends Helper
{
var $helpers = array('Html');
var $buffer;   // Array
var $str;       // String

function CrumbHelper() { // Metodo constructor
$this->buffer[] = "<div id='breadcumb'><img src="/img/cms/home.gif?9d7bd4" border='0'><a href='/admin/admins/menu'>Home</a>";
}

function add($titulo, $url=null)   {

if(!empty($url)):
$this->buffer[] = " >> " . $this->Html->link($titulo, $url);
else:
$this->buffer[] = " >> " . $titulo;
endif;

return true;
}

function html() {
foreach($this->buffer as $links):
$this->str .= $links;
endforeach;

$this->str .= "</div>";
return $this->output($this->str);
}
}
?>

Ver codigo con colores en: http://bin.cakephp.org/view/1116949936

Problemas seleccion de texto con Drag and drop

Con mootools, tuve un problema cuando realizaba Drag & Drop para ordenar unas paginas del sitio, el error era que me seleccionaba el texto y me lo dejaba realmente feo.

Investigando llege a la conclusión de eliminar el evento onselect directamente del body de nuestra pagina. En el siguiente trozo de codigo demuestro com o se puede evitar la seleccion de texto en Internet Explorer:


<script type="text/javascript">
window.onDomReady(function() {
// IE Fix
document.body.onselectstart = function () { return false; };
}
</script>

i’m not hacker

Descubri un hoyo de seguridad, el cual informe debidamente a un contacto directo del sitio dev.cl , debido a un problema de seguridad en la pequeña aplicacion para acortar las url:

“Los nuevos sistemas WEB 2.0 tienen APIs abiertas para usuarios sin tener el concepto B2P o B2B de limites

de recursos ni el control. Por esto surge mi concepto de probar la generacion de URLs automaticas en el sitio realizando un

DoS Atack Prof exitoso para ver la cantidad de urls maximas que se podrí­an generar y resulto ser ILIMITADA POR IP y ILIMITADA
POR USUARIO.”

Cualquier consultoria de seguridad, hacemela llegar a mi correo framirez(at)gurunet.cl y encantado te ayudaré y mejoraremos el servicio.

Fabian Ramirez


El script no lo publicare por asuntos eticos y como te dije, no soy hacker, sino consultor de seguridad.

Saludos

Tips y Seguridad para PHP

He realizado algunos tips, basados en mi experiencia de este fabuloso lenguaje de programación para sitios webs. Aquí­ va la lista. Se aceptan sugerencias:

  1. Siempre al poner en producción un desarrollo, habilitar el error_reporting(0) en cabecera, en caso de error, el cliente no verá un mensaje feo en pantalla.
  2. Siempre esconder la tecnologí­a utilizada, vale decir todos los .php , arreglalos con mod_rewrite.
  3. Siempre validar los parámetros que se entregan. Todos los datos que vienen de INTERNET deben ser validados. Ejemplo:

    if(is_numeric($_GET['variable'])) // Integer
    if(is_string($_GET['variable'])) // String
    if($this->Session->check('Usuario')) // Chequear usuario valido

  4. Para evitar un SQL Injection o un XSS Atack, utilizar la funcion addslashes. Ejemplo:
    $variable = addslashes(trim($_GET['variable']))
  5. Todos los datos que se envien deben ser codificados en UTF-8 para ser internacionalizados.
  6. Siempre formatear los numeros en formato €. Ejemplo:

    $total = number_format($euro,2,'.',',');
    Resultado: €1.000,20
  7. El formato de fecha SIEMPRE debe ser DIA-MES-Aí‘O, esto se realiza con la función date. Ejemplo:
    $fecha = date('d-m-Y', strtotime($fecha));
  8. Al comunicarse con flash, se debe tener en cuenta el crossdomain.xml. Ejemplo:

    <cross-domain-policy>
    <allow-access-from domain="”*.atobiz.com”"></allow-access-from>
    </cross-domain-policy>
  9. Al realizar pagos y demases, guardar SIEMPRE el precio en una session, ya que por $_GET o $_POST puede ser hackeado.
  10. Siempre encriptar los password con md5, ningún password puede quedar almacenado en texto plano.
  11. Siempre para comprobar si existen datos, utilizar las funciones isset o empty, ejemplo:

    if( ¡empty($_POST['valor']))
    if(isset($_POST['valor']))
  12. Si se esta utilizando un textarea, siempre traspasar el contenido a la funcion htmlspecialchars. Ejemplo:

    $texto = htmlspecialchars($_POST['texto']);

  13. Ningun directorio puede quedar visible para las personas. Para regular esto, poner un index.html en el directorio, para que al ser visualizado quede la pantalla en blanco.
  14. Register Globals esta obsoleto, usar $_GET o $_POST.
  15. NUNCA transpasar datos de usuario via $_GET.
  16. $_POST es para enviar información, $_GET es para recibir.
  17. Utilizar Javascript para validar datos no es suficiente, recuerda que hay clientes que tienen esto deshabilitado.
  18. Nunca utilizar terminaciones .inc ,estas pueden ser vistas por los usuarios, ya que el servidor las entiende como texto plano.

Ruby on Rails errores personalizados

Estas aburrido de tener en los errores algo como esto?

  • Persona La contraseña debe ser mayor a 10 caracteres
  • Paise Debe completar su paí­s para continuar

La verdad que encontre una solucion media sucia, que en un futuro será remplazada por nuestro amigo usuario_helper.rb

Aca va el codigo:

<% unless @usuario == nil or @usuario.errors.empty? %>
<h3>Errores registrando su usuario</h3>
<ul>
	<% @usuario.errors.each_full do |message| %>
	<li>
	<%
		# Declaramos la variabl, y la inicializamos en 0
		i = 0

		# Separamos el error por espacio
		error = message.split(' ')

		# Recorremos el error
		error.each do |mensaje|
	%>
		<%= mensaje if i > 0 %>
		<%  i = i+1 end%></li>
<% end%></ul>
<% end %>

Macos X y Windows 2003, Active directory

Que dolores de cabeza durante 2 dí­as, intentando integrar una MacOSX a Windows 2003 (Active Directory). El problema se basaba en que la sección marketing de la empresa donde trabajo, les encanta Mac (Me incluyo desde este momento que me esta convenciendo y aparecere con una Mac). La autentificación de Windows 2003 es a travez de LDAP, entonces vale decir que hay que integrar LDAP a la MAC.

¡Horrible! el Mac estaba en Holandes … 1 dia perdido .. seguimos buscando y encontramos .. luego el problema fue que identificabamos PERO no podiamos acceder al recurso .. otro problema …

Solución .. Instalar el protocolo de Mac para compartir archivos, funciona con la misma autentificacion de Windows 2003 Active Directory o menores ..

Problema .. el Mac tiene acceso a todos losrecursos con escritura y todo .. Bueno eso no importa es la Jefa :)

Optimizacion CakePHP para leer datos de los modelos

Anteriormente para leer datos de los modelos de las bases de datos utilizaba la siguiente sentencia:

  •  $this->Modelo->id = 2;
    $modelo = $this->Modelo->read();
    $this->set(‘modelo’, $modelo);

Esa sentencia fue remplazada por la simple, facil y limpia:

  • $this->set(‘modelo’, $this->Modelo->findById(2));

Saludos

Respaldo PosgretSQL automatizado

El cliente tenia los siguientes requerimientos de respaldo en su servidor de bases de datos PostgreSQL:

  • Respaldo todos los dias a las 00:00 de su base de datos PostgreSQL
  • Respaldo en el formato NOMBREDB_Aí‘OMESDIA.sql
  • Permisos especiales para un usuario especifico.

Se utilizo el lenguaje de programacion EXPECT y el codigo es el siguiente:

#!/usr/bin/expect -f
# Parametros por defecto
set server "localhost"
set username "postgres"
set password "CONTRASEí‘A"

# Parametros leidos via WEB
set directorio [lindex $argv 0]
set permiso [lindex $argv 1]
set database [lindex $argv 2]

# Leemos la fecha
set fecha [exec date +%Y%m%d]
set under "_"
set sql ".sql"

set directorio [concat $directorio$database$under$fecha$sql]

spawn /usr/bin/pg_dump -U $username -h $server -W $database -f $directorio
expect "Password: "
sleep 1
send "$password\r"
wait
exec /bin/chown -R $permiso $directorio
exit

El metodo se ejecucion es el siguiente desde un CRON:

* 00 * * * /bin/pg_back /var/www/virtual/dominio.cl/respaldo_postgresql/ micliente:www-data NOMBREDB

Si desea, tambien lo puede hacer manual:


/bin/pg_back /var/www/virtual/dominio.cl/respaldo_postgresql/ micliente:www-data NOMBREDB

El respaldo es de la base de datos completa.

Saludos y frente a dudas postreenlas aca.

New Job City busca empleos de forma 2.0

  1. ¿Buscas empleo?
  2. ¿Aburrido de las formas actuales para reclutar personal?
  3. ¿Postear Videos, Audios, Imagenes, Documentos?
  4. ¿Quieres demostrar lo que realmente eres y en lo bueno que eres?

La solución es el portal de empleos New Job City www.newjobcity.net , tal cual como dice arriba, cumple toda esas metas. En primera instancia se trabajará con el reclutamiento de personas para trabajar en los 12 nuevos casinos que abriran en Chile.

¿Postula, quien sabe si encuentras tu empleo ideal?

El sistema tomó para su creacion 2 meses, utilizando tecnicas XP para desarrollo agil. Fue creado por mí­ :P en conjunto con la agencia creativa Designa LTDA.

dokshor.com (RSS) + Sator-ii theme by Felipe Lavín and finally edited by dokshor.

hacker emblem