elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
13 Febrero 2012, 17:57  

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  Pequeños trucos en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Pequeños trucos en PHP  (Leído 36,284 veces)
Ertai
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.027


Ralph Wiggum


Ver Perfil
Pequeños trucos en PHP
« en: 14 Diciembre 2006, 01:27 »

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.

Este post es para que le vayais hechando un ojo de vez en cuando, y que, si algun día os encontreís un problema podais acudir aquí para ver como se hacía.

Los trucos escritos aquí seran reescritos por mí en el primer post, para mantener un poco el orden. Gracias.



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
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
mysql_query('UPDATE trucos SET lecturas = lecturas + 1 WHERE id=12 LIMIT 1');
?>
 



Hacer funcionar la función mail()
En local, la función mail() nos devolverá un error porque no tenemos configurado un cliente SMTP.

Aquí teneis la forma más fácil y rápida de solucionar este problema.

http://www.forosdelweb.com/showpost.php?p=662241&postcount=115



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
$color = "#000000";
$i = 0;
while ($i < 10)
{
  $color = ($color == "#000000") ? "#FFFFFF" : "#000000";
  echo $color."<br>";
  $i++;
}
?>
 



Fechas en MySQL
Una lista de funciones muy útiles para trabajar con fechas en nuestra base de datos MySQL

http://www.xlwebmasters.com/modules.php?d=doc&f=doc2&id=1057



Saber si un año es bisiesto
Pues eso :xD (por Azielito)

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

... y asi funciona ...

Código
<?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
header("Content-type: application/force-download");
 


« Última modificación: 20 Septiembre 2007, 21:13 por Ing_Amc » En línea

Si la felicidad se comprara, entonces el dinero sería noble.

Código:
void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.083


Mtz De C.


Ver Perfil WWW
Re: Pequeños trucos en PHP
« Respuesta #1 en: 31 Marzo 2007, 01:53 »

Aquí dejo una función muy sencilla pero útil  ;)

Código
<?php
function conectar($host, $user, $pass, $database){
$conectar = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($database,$conectar);
return $conectar;
}
$conexion=conectar("tuhost","user","password","basededatos");
?>
 

Por ejemplo, en cada desarrollo creo un archivo llamado db.php y lo incluyo (include()) en mis php que usan MySQL. Ya solo utilizamos la variable $conexion como identificador de conexión.



Validar email
Una función para validar tu email (incluyendo subdominios).
Código
<?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
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);
?>
 



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

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



Mandar email con PHP
Enviar email con la función mail() de PHP.

Código
<?php
//Ejemplo: send_mail("user@mail.com","cuerpo","asunto","demi@localhost","demi");
 
function send_mail($to, $body, $subject, $fromaddress, $fromname, $attachments=false)
{
 $eol="\r\n";
 $mime_boundary=md5(time());
 
 # Common Headers
 $headers .= "From: ".$fromname."<".$fromaddress.">".$eol;
 $headers .= "Reply-To: ".$fromname."<".$fromaddress.">".$eol;
 $headers .= "Return-Path: ".$fromname."<".$fromaddress.">".$eol;    // these two to set reply address
 $headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol;
 $headers .= "X-Mailer: PHP v".phpversion().$eol;          // These two to help avoid spam-filters
 
 # Boundry for marking the split & Multitype Headers
 $headers .= 'MIME-Version: 1.0'.$eol.$eol;
 $headers .= "Content-Type: multipart/mixed; boundary=\"".$mime_boundary."\"".$eol.$eol;
 
 # Open the first part of the mail
 $msg = "--".$mime_boundary.$eol;
 
 $htmlalt_mime_boundary = $mime_boundary."_htmlalt"; //we must define a different MIME boundary for this section
 # Setup for text OR html -
 $msg .= "Content-Type: multipart/alternative; boundary=\"".$htmlalt_mime_boundary."\"".$eol.$eol;
 
 # Text Version
 $msg .= "--".$htmlalt_mime_boundary.$eol;
 $msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
 $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
 $msg .= strip_tags(str_replace("<br>", "\n", substr($body, (strpos($body, "<body>")+6)))).$eol.$eol;
 
 # HTML Version
 $msg .= "--".$htmlalt_mime_boundary.$eol;
 $msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
 $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
 $msg .= $body.$eol.$eol;
 
 //close the html/plain text alternate portion
 $msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol;
 
 if ($attachments !== false)
 {
   for($i=0; $i < count($attachments); $i++)
   {
     if (is_file($attachments[$i]["file"]))
     {  
       # File for Attachment
       $file_name = substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1));
 
       $handle=fopen($attachments[$i]["file"], 'rb');
       $f_contents=fread($handle, filesize($attachments[$i]["file"]));
       $f_contents=chunk_split(base64_encode($f_contents));    //Encode The Data For Transition using base64_encode();
       $f_type=filetype($attachments[$i]["file"]);
       fclose($handle);
 
       # Attachment
       $msg .= "--".$mime_boundary.$eol;
       $msg .= "Content-Type: ".$attachments[$i]["content_type"]."; name=\"".$file_name."\"".$eol;  // sometimes i have to send MS Word, use 'msword' instead of 'pdf'
       $msg .= "Content-Transfer-Encoding: base64".$eol;
       $msg .= "Content-Description: ".$file_name.$eol;
       $msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol.$eol; // !! This line needs TWO end of lines !! IMPORTANT !!
       $msg .= $f_contents.$eol.$eol;
     }
   }
 }
 
 # Finished
 $msg .= "--".$mime_boundary."--".$eol.$eol;  // finish with two eol's for better security. see Injection.
 
 # SEND THE EMAIL
 ini_set(sendmail_from,$fromaddress);  // the INI lines are to force the From Address to be used !
 $mail_sent = mail($to, $subject, $msg, $headers);
 
 ini_restore(sendmail_from);
 
 return $mail_sent;
}
?>
 



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

Código
<?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\nNo es posible redireccionar, por ahora por favor " .
        "pulse este <a href=\"http://www.example.com\">enlace</a> en su " .
        "lugar\n";
   exit;
}
 
?>

Otros más:
Glosario de funciones
http://foro.elhacker.net/index.php/topic,65126.0.html


« Última modificación: 20 Febrero 2008, 17:50 por Ing_Amc » En línea



Con sangre andaluza :)
born2kill

Desconectado Desconectado

Mensajes: 173


Ver Perfil WWW
Re: Pequeños trucos en PHP
« Respuesta #2 en: 16 Julio 2007, 00:22 »

Aqui algunas funciones simples y utiles  :)

Código
<?php
function mysql_now() {
   $fecha = fecha(”Y-m-d H:i:s”);
   return $fecha;
}
?>

Con la función MySqlNow, podemos obtener la hora y fecha local desde MYSQL.



Código
<?php
// Abrimos la conexion FTP
$conn_id = ftp_connect($ftp_server);
 
// Entramos con nuestro user & pass
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
 
// Chequeamos la conexion
if ((!$conn_id) || (!$login_result)) {
       echo "Fallo conexion";
       exit;
   } else {
       echo "Conectado a $ftp_server, for user $ftp_user_name";
   }
 
// Cerramos la conexion
ftp_close($conn_id);
?>  
 

Con esta función nos conectamos a un servidor FTP, y luego nos desconectamos, esto es util para si tenemos algun script y tenemos que renombrar archivos, etc.

B0rn2kill
« Última modificación: 16 Julio 2007, 00:27 por born2kill » En línea

Red Mx
Rojito
Colaborador
***
Desconectado Desconectado

Mensajes: 3.636


Viva México Cabrones...


Ver Perfil WWW
Re: Pequeños trucos en PHP
« Respuesta #3 en: 16 Julio 2007, 01:28 »

Ps ay les voy con unas

Código
//------ Funciones de abstraccion de consultas SQL ---------------------
 
//-INSERT- $columns=get_commas(...)   $values=get_commas(...)
function get_insert($table, $columns, $values){
return "INSERT INTO $table ($columns) VALUES ($values)";
}
 
//-UPDATE- $values=get_mult_set(...)   $where=get_mult_set(...) o get_simp_set(...)
function get_update($table, $values, $where){
return "UPDATE $table SET $values WHERE $where";
}
 
//-UPDATE- actualiza una tabla con valores de otra (sólo MySQL >4.xx)
function get_update_join($table_a, $table_b, $id_a, $id_b, $values, $where=''){
if($where!='') $where="AND ($where)";
return "UPDATE $table_a a, $table_b b SET $values WHERE a.$id_a=b.$id_b $where";
}
 
//-SELECT- $columns=get_commas(...) o '*'   $where=get_mult_set(...) o get_simp_set(...)
function get_select($table, $columns, $where='', $order=''){
$tmp = "SELECT $columns FROM $table";
if($where!=''){
$tmp.=" WHERE $where";
}
if($order!=''){
$tmp.=" ORDER BY $where";
}
return $tmp;
}
 
//-SELECT- entre 2 tablas por 2 indices comunes
function get_select_join($table_a, $table_b, $id_a, $id_b, $columns, $where='', $order=''){
$table ="$table_a a, $table_b b";
$w="a.$id_a=b.$id_b ";
if($where!='') $w.="AND ($where)";
return get_select($table, $columns, $w, $order);
}
 
 
//-DELETE-  $where=get_mult_set(...) o get_simp_set(...)
function get_delete($table, $where=''){
$tmp = "DELETE FROM $table";
if($where!=''){
$tmp.=" WHERE $where";
}
return $tmp;
}
//- get_commas(true|false, 1, 2, 4...) true pone comillas  => '1','2','4'...
function get_commas(){
$a=func_get_args();
$com = $a[0];
return get_commasA(array_slice($a, 1, count($a)-1), $com);
}
//- como la anterior pero devuelve entre comas el array pasado
function get_commasA($arr_in, $comillas=true){
$temp='';
$coma="'";
if(!$comillas) $coma=''; //-el 1er param==true, metemos comas
 
foreach($arr_in as $arg){
  if($temp!='')  $temp.=",";
  if(substr($arg,0,2)=='!!'){ //- Si empieza por !! no le pongo comas...
$temp.=substr($arg,2); continue;
  }
  $temp.="$coma".$arg."$coma";
}
return $temp;
}
 
//- Devuelve una asignacion (por defecto) simple entre comillas  X='1'
function get_simp_set($col, $val, $sign='=', $comillas=true){
$cm="'";
if(!$comillas) $cm='';
if(substr($val,0,2)=='!!'){ //- Si empieza por !! no le pongo comas...
$val=substr($val,2); $cm='';
}
return $col."$sign $cm".$val."$cm";
}
 
//-Mezcla cada valor de $a_cols, con uno de $a_vals   "X='1', T='2'...
//- ej:  con $simb='or'  X='1' or T='2'...
//- ej:  con $sign='>'   X>'1' or T>'2'...
function get_mult_set($a_cols, $a_vals, $simb=',', $sign='=', $comillas=true){
$temp='';
for($x=0;$x<count($a_cols);$x++){
if($temp!='')  $temp.=" $simb ";
  $temp.= get_simp_set($a_cols[$x],$a_vals[$x], $sign, $comillas);
}
return $temp;
}
 
function get_between($col, $min, $max){
return "($col BETWEEN $min AND $max)";
}
 
 
?>
 
 
En línea

Desarrollar Malware Es Causa De Cancer...
coolfrog


Desconectado Desconectado

Mensajes: 325


Ver Perfil WWW
Re: Pequeños trucos en PHP
« Respuesta #4 en: 11 Agosto 2007, 19:18 »

aqui les paso mi clase:
hola que tal, bueno hice una clase para evitar tener que cambiar la sintaxis con diferentes bases de datos, todo ese proceso de queries y connects es muy engorroso y bueno aqui esta mi clase hecha en php5 (la hice en php4 pero la actualize).

Deben nombrar a este archivo "DBALL.php" (nota: no significa Dragon Ball, significa data bases all - todas las bases de datos)   ;D ;D
Código
<?php
/**
* Creador: Coolfrog  from Bolivia
* Correo: jm.neutron@gmail.com
* Blog: http://mundocoolf.blogspot.com
* Web Page: ***En progreso***
* Version:1.1
*
* Clase para php5  que permite ejecutar MYSQL, POSTGRESQL  E ISIS
* en versiones siquientes  se aumentara para oracle y otras que sean necesarias.
* Ultima Acualización 6/8/07
*
* Es cogigo libre y puede ser distribuido a cualquier persona, solo una condicion ,para usar esta clase deben dejar mis datos ;) es lo unico que les agradeceria que hicieran
*/

include("iniDB.php"); //archivo que inicia las variables estaticas, SIRVE PARA TRABAJAR CON UN SOLO MOTOR DE BASE DATOS
class DBALL{
public static $host;
public static $usr;
public static $pass;
public static $dbname;
public static $motor;
private $conex;
private $result;
public static $showErrors;
 
/*#######DESCOMENTAR EL CONSTRUCTOR SI SE QUIERE TRABAJAR CON DOS O MAS MOTORES DE BASES DE DATOS AL MISMO TIEMPO, Y HACER LA CONEXCION CON EL CONSTRUCTOR PARA CADA MOTOR#######*/
/**
* constructor que inicia las variables
*
* @param str $host
* @param str $usr
* @param str $pass
* @param str $dbname
* @param str $motor
   */

/*function __construct($host,$usr,$pass,$dbname,$motor){
self::$host=$host;
self::$usr=$usr;
self::$pass=$pass;
self::$dbname=$dbname;
self::$motor=$motor;
}*/

/*#####CONSTRUCTOR: DESCOMENTAR HASTA AQUI#####*/
/**
* metodo que conecta a una base de datos dependiendo del parameto $motor
* @return boolean
   */

public function dbConnect(){
   self::$motor=strtoupper(self::$motor);
   $v=false;
if(self::$motor=="MYSQL"){
$this->conex=mysql_connect(self::$host,self::$usr,self::$pass);
$var=mysql_select_db(self::$dbname,$this->conex);
if($var){
$v=true;
}
} else if(self::$motor=="PSQL"){
    $this->conex=@pg_connect("host=".self::$host." dbname=".self::$dbname." user=".self::$usr." password=".self::$pass);
if($this->conex){
    $v=true;
}
   } else if(self::$motor=="ISIS"){
  $this->conex=isis_open(self::$dbname,"-v error -format aligned -encoding ISO8859_1");
    if($this->conex){
$v=true;
}
}
//devuelve true si se conecto y false si hay error
return $v;
}
/**
 * selecciona registros SELECTS
 *
 * @param string $consulta
 * @return array
*/

public function dbSelect($consulta){
$res=array();
if(self::$motor=="MYSQL"){
$this->result = mysql_query($consulta);
if(self::$showErrors){
if(mysql_errno($this->conex)!=0)
    echo "Error ".mysql_errno($this->conex)." : ".mysql_error($this->conex);
    }
$fila= mysql_num_rows($this->result);
$i=0;
while ($row = mysql_fetch_object($this->result)){
$res[$i]=$row;
$i++;
}
mysql_free_result($this->result);
}else if(self::$motor=="PSQL"){
$this->result = @pg_query($this->conex,$consulta);
$fila=@pg_numrows($this->result);
for($i=0;$i<$fila;$i++){
$res[$i]=@pg_fetch_object($this->result,$i);
    }
@pg_free_result($this->result);
 
}else if (self::$motor=="ISIS"){
$this->result = isis_query($consulta,$this->conex);
$i=0;
if ($this->result!=null && $this->result!='') {
while($record = isis_fetch_flat_array($this->result)){
$res[$i]=$record;
   $i++;
}
}
    }
return $res;
}
/**;
* realiza consultas como:UPDATE,INSERT AND DELETE
* retorna true si la consulta se ejecuto correctamente caso contrario false
*
* @param string $consulta
* @return boolean
*/

public function dbABM($consulta){
$r=false;
if(self::$motor=="MYSQL"){
$this->result = mysql_query($consulta);
if(self::$showErrors){
if(mysql_errno($this->conex)!=0)
    echo "Error ".mysql_errno($this->conex)." : ".mysql_error($this->conex);
    }
//mysql_free_result($this->result);
}else if(self::$motor=="PSQL"){
$this->result = @pg_query($this->conex,$consulta);
pg_free_result($this->result);
}
if ($this->result) {
$r=true;
}
//Devuelve false en caso de error
return $r;
}
/**
* Inicia la transaccion, retorna true si la transaccion se Inicia correctamente caso contrario false
*
* @return Boolean
*/

public function dbBeginTransaction(){
if(self::$motor=="MYSQL"){
$this->result = mysql_query("BEGIN");
}else{
$this->result = pg_query($this->conex,"BEGIN");
}
if ($this->result) {
return true;
//echo "Transaccion Iniciada";
}
else
   return false;
}
/**
* Cancela la transaccion, retorna true si la transaccion es cancelada correctamente caso contrario false
*
* @return Boolean
*/

   public function dbCancelTransaction(){
        if(self::$motor=="MYSQL"){
$this->result = mysql_query("ROLLBACK");
}else{
$this->result = pg_query($this->conex,"ROLLBACK");
}
if ($this->result) {
return true;//$r=true;
//echo "Transaccion Cancelada";
}
else
   return false;
 
}
/**
* Termina la transaccion, retorna true si la transaccion termina correctamente caso contrario false
*
* @return Boolean
*/

public function dbEndTransaction(){
if(self::$motor=="MYSQL"){
$this->result = mysql_query("COMMIT");
}else{
$this->result = pg_query($this->conex,"COMMIT");
}
if ($this->result) {
return true;
//echo "Transaccion Terminada";
} else
   return false;
}
 
public function dbClose(){
if(self::$motor=="MYSQL"){
mysql_close();
}else if(self::$motor=="PSQL"){
pg_close();
}else if (self::$motor=="ISIS"){
   @isis_close($this->conex);//$this->dbname,"-v error -format aligned -encoding ISO8859_1"
}
}
 
 
// #################### FUNCIONES EXCLUSIVAS PARA ISIS #######################
/*PUEDEN BORRAR O COMENTAR ESTAS FUNCIONES SI NO UTILIZAN  ISIS*/
private function num_reg_query(){  //retorna el numer de registros de la consulta
if ($this->result!=null && $this->result!='') {
return isis_num_rows($this->result);
}//else return 0;
}
private function num_reg(){ //retorna el numer de registros de toda la BD
return isis_last_mfn($this->conex);
}
private function get_reg($mfnindex){ //retorna el registro especificado
return isis_fetch_flat_array_from_mfn($mfnindex,$this->conex);
}
// #################### FUNCIONES EXCLUSIVAS PARA ISIS #######################
}
?>
 

El archivo de configuracion de los parametros iniciales es este:
Deben nombrar a este archivo "iniDB.php"
Código
<?php
//parametros de inicio de la base de datos
DBALL::$host="localhost";     //la ruta del servidor donde esta la BD
DBALL::$usr="root";             //el usuario para conectarse
DBALL::$pass="mysql";        //el password para conectarse
DBALL::$dbname="logico";   //nombre de la base de datos
DBALL::$motor="mysql";     //el motor puede ser mysql,postgres o isis
DBALL::$showErrors=true;  // indica si se deben mostrar los errores de la BD
?>
 

Como dice al inicio de los comentarios cualquiera que este interesado puede usar mi clase solo les pido que dejen mis datos al inicio smiley

Ahora su forma de uso es la siguiente para un INSERT, DELETE O UPDATE:
Código
$categoria="php"
$categoriaPadre=1
include("DBALL.php"); //incluyen el archivo que contiene la clase
$mydb=new DBALL();  //instancian a la clase
if($mydb->dbConnect()){  //el metodo dbConnect devuelve true si no hay problemas
//una consulta insert
$sql="INSERT INTO CATEGORIA VALUES(default,'$categoria',$categoriaPadre);";
   if($mydb->dbABM($sql)) //procesa consultas insert,delete y update
       echo "SE INSERTO CORRECTAMENTE");
else  echo "NO SE PUEDO INSERTAR";
}
else{
echo "NO SE PUDO CONECTAR";
}
 

Ahora su forma de uso es la siguiente para un SELECT

Código
include("DBALL.php"); //incluyen el archivo que contiene la clase
$mydb=new DBALL();  //instancian a la clase
if($mydb->dbConnect()){  //el metodo dbConnect devuelve true si no hay problemas
//una consulta select
$sql="select * from categoria";
$reg=$mydb->dbSelect($sql); //dbSelect devuelve un array de objetos
//para recorrer el array
for($i=0;$i<count($reg);$i++){
echo "<option value=".$reg[$i]->idCat.">".$reg[$i]->nombreCategoria."</option>";
//se accede a los nombres los campos como si fueran propiedades de objetos
}
}
else{
echo "NO SE PUDO CONECTAR";
}
 

Para terminar deben guardar los dos archivos "DBALL.php" y "iniDB.php" en el mismo directorio.


Bueno eso es todo, tb. tiene metodo para manejar transacciones pero eso es mas facil y si tienen dudas pregunten que con gusto voy a contestar.

PD: Si alguien quiere modificar o ayudarme a hacer algunas mejoras con gusto las recibo, y si quieren la clase para php 4 solo avisen.
En línea
alienmaster

Desconectado Desconectado

Mensajes: 36


El niño güey! xd


Ver Perfil WWW
Funcion para cortar texto
« Respuesta #5 en: 16 Septiembre 2007, 04:53 »

Funcion para cortar texo o limitar, ideal para ultimas noticias y demas

Código
<?
// Funcion para cortar texto
// Programado por alienmaster <efnworkz@hotmail.com>
// http://4cosas.com
function cortar($text0, $limite){
   $comp = strlen($text0);
   if($comp > $limite){
       return = substr($text0, 0, $limite)."...";
   }
   else{
       return "$text0";
   }
}
?>
« Última modificación: 16 Septiembre 2007, 07:03 por Ing_Amc » En línea

Carxl

Desconectado Desconectado

Mensajes: 29

Intentando ser webmaster!!!


Ver Perfil
Pequeños trucos en PHP
« Respuesta #6 en: 30 Enero 2008, 04:30 »

Forma abreviada para imprimir en pantalla

Es sencillo!!!

Código:
$nick="Soy Carxl";
<?=$nick?>

Esa instrucción reemplazaría: <?php echo $nick;?>

Saludos ;D
En línea

Hay 10 tipos de personas, los que entienden binario... y los que no!
WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.941


The Hacktivism is not a crime


Ver Perfil WWW
Re: Pequeños trucos en PHP
« Respuesta #7 en: 17 Junio 2008, 00:19 »

Hice una pequeña función que permite seleccionar lo que hay dentro de un string desde la palabra necesitada hasta la que finaliza...

Código
<?php
 
function desde_hasta($desde, $hasta, $contenido){
if(eregi($desde ,$contenido)){
 $retorno = explode($desde, $contenido);
 $retorno = $retorno[1];
 $retorno = explode($hasta, $retorno);
 $retorno = $retorno[0];
 return $retorno;
} else {
 return FALSE;
}
}
 
?>

De esta forma ejecutas:
Código
<?php
$contenido = 'tienes <a href="http://foro.elhacker.net/pm.html">111 mensajes</a>';
$cantidad_mensajes = desde_hasta('tienes <a href="http://foro.elhacker.net/pm.html">', 'mensajes</a>', $contenido);
echo "Cantidad de mensajes: $cantidad_mensajes\n";
?>
Desbuelve:
Citar
Cantidad de mensajes: 111
En línea


WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.941


The Hacktivism is not a crime


Ver Perfil WWW
Recortar palabras largas
« Respuesta #8 en: 7 Septiembre 2008, 21:14 »

Estaba realizando unas funciones propias para un sistema que estoy haciendo y quería compartirlo con ustedes si es que agún dia tienen la misma necesidad:

Código
<?php
$palabra = "1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950";
echo whk_recorta($palabra,10);
/* Resultado: 1234567891...4647484950 */
 
function whk_recorta($palabra,$limite){
if($limite < 1){
 return $palabra;
}
if(strlen($palabra)>(($limite * 2) + 1)){
 for($cuenta=0;$cuenta<$limite;$cuenta++){
  $palabra_final .= $palabra[$cuenta];
 }
 $palabra_final .= "...";
 for($cuenta = (strlen($palabra) - $limite); $cuenta <= strlen($palabra); $cuenta++){
  $palabra_final .= $palabra[$cuenta];
 }
 return $palabra_final;
}else{
 return $palabra;
}
}
?>

De esta forma se recortan hacia ambos lados... derecha e isquierda.
« Última modificación: 7 Septiembre 2008, 21:16 por WHK » En línea


cassiani


Desconectado Desconectado

Mensajes: 942


« Anterior | Próximo »


Ver Perfil WWW
Re: Pequeños trucos en PHP
« Respuesta #9 en: 20 Septiembre 2008, 18:54 »

Código
#---------------------------------------------------------------------------------------
#Descripcion: sencilla funcion que permite generar una cadena aleatoria,
#recibiendo como unico parametro, la longitud que tendra la misma.
#Autor: cassiani
#Comentario: espero les sea de utilidad  ;)
#---------------------------------------------------------------------------------------
Function RndString($LongString)
{
For ($i=0; $i<$LongString - 1; $i++)
{
switch (rand(0,2))
{
Case 0: $RndString .= chr((rand(0,9)) + 48);break;
Case 1: $RndString .= chr((rand(0,25)) + 65);break;
Case 2: $RndString .= chr((rand(0,25)) + 97);break;
}
}
return $RndString;
}
« Última modificación: 20 Enero 2009, 01:26 por cΔssiΔnі » En línea

DJmixmancar

Desconectado Desconectado

Mensajes: 98


Ver Perfil
Re: Funcion para cortar texto
« Respuesta #10 en: 4 Octubre 2008, 16:46 »

Funcion para cortar texo o limitar, ideal para ultimas noticias y demas

Código
<?
// Funcion para cortar texto
// Programado por alienmaster <efnworkz@hotmail.com>
// http://4cosas.com
function cortar($text0, $limite){
   $comp = strlen($text0);
   if($comp > $limite){
       return = substr($text0, 0, $limite)."...";
   }
   else{
       return "$text0";
   }
}
?>

oe man una consultatita , como aria esta esta funcion con una consulta en mysql
que muestre las noticias no entiendo bien con mysql
En línea
WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.941


The Hacktivism is not a crime


Ver Perfil WWW
Re: Pequeños trucos en PHP
« Respuesta #11 en: 13 Octubre 2008, 09:04 »

Transformación de Strings en múltiples formas

Código
// Powered by GreenCode - WHK
function codifica_base64_gz($buffer){
$buffer = bin2hex(base64_encode(gzcompress($_POST['buffer'])));
$separador = 16; // Editable, separador de 16 bytes.
$separa = 0;
for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){
 if($separa == 0){
  $dump .= '"';
 }
 $dump .= '\x'.$buffer[$cuenta].$buffer[$cuenta+1];
 $separa++;
 if($separa == $separador){
  $dump .= '"';
  if($cuenta != (strlen($buffer))-2){
   $dump .= '.'."\n";
  }
  $separa = 0;
 }
}
if($dump[strlen($dump)-1] != '"'){
 $dump .= '"';
}
return
"\x3c\x3fphp\n// ...\n\n/* El retorno es tu buffer */".
"\$str = gzuncompress(base64_decode(\n$dump\n));\n\n// ...\n\x3f\x3e";
}
 
function ascii_a_png($buffer){
return
"\x3c\x3fphp\n// ...\n\n".
"/* El retorno es una imagen */\n".
"\$handle_img = imagecreate(".(int)(strlen($buffer) * 9).", 30);\n".
"\$fondo = imagecolorallocate(\$handle_img, 255, 255, 255);\n".
"\$color_texto = imagecolorallocate(\$handle_img, 0, 0, 255);\n".
"imagestring(\$handle_img, 5, 0, 0, base64_decode(\"".base64_encode($buffer)."\"), \$color_texto);\n".
"header(\"Content-type: image/png\");\n".
"imagepng(\$handle_img);\n\n".
"// ...\n\x3f\x3e";
}
 
function sqlchr($buffer){
for($cuenta=0;$cuenta<strlen($buffer);$cuenta++){
 $dump .= 'char('.ord($buffer[$cuenta]).')';
 if((strlen($buffer) - 1) != $cuenta){
  $dump .= ',';
 }
}
return $dump;
}
 
function sqldword($buffer){
return 'funcion(0x'.bin2hex($buffer).')';
}
 
function urlencode_total($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){
 $dump .= '%'.$buffer[$cuenta].$buffer[$cuenta+1];
}
return $dump;
}
 
function unescape_javascript($buffer){
return '<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
document.write(unescape("'
.urlencode_total($buffer).'"));
</SCRIPT>'
;
}
 
function php_encode($buffer){
$buffer = bin2hex(base64_encode(gzcompress($_POST['buffer'])));
$separador = 16; // Editable, separador de 16 bytes.
$separa = 0;
for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){
 if($separa == 0){
  $dump .= '"';
 }
 $dump .= '\x'.$buffer[$cuenta].$buffer[$cuenta+1];
 $separa++;
 if($separa == $separador){
  $dump .= '"';
  if($cuenta != (strlen($buffer))-2){
   $dump .= '.'."\n";
  }
  $separa = 0;
 }
}
if($dump[strlen($dump)-1] != '"'){
 $dump .= '"';
}
return
"\x3c\x3fphp\n// ...\n".
"/*\nRecuerda que no debes anteponer '\x3c\x3f' ni terminar con '\x3f\x3e'".
"Elimina este comentario.\n*/\n".
"eval(gzuncompress(base64_decode(\n$dump\n)));\n\n// ...\n\x3f\x3e";
}
 
function decodifica_base64_gz($buffer){
$buffer1 = str_replace('"',' ',$buffer);
$buffer1 = str_replace('.',' ',$buffer);
$buffer1 = explode('\x',$buffer);
$buffer1[0] = '';
for($cuenta=0;$cuenta<count($buffer1);$cuenta++){
 if(strlen($buffer1[$cuenta]) == '2'){
  $buffer2 .= ' '.$buffer1[$cuenta];
  $procesando = true;
 }else{
  if($procesando){
   $buffer2 .= ' '.$buffer1[$cuenta][0].$buffer1[$cuenta][1];
  }
 }
}
$buffer2 = explode(' ',$buffer2);
for($cuenta=0;$cuenta<count($buffer2);$cuenta++){
 if(strlen($buffer2[$cuenta]) == '2'){
  $buffer3 .= $buffer2[$cuenta];
 }
}
return gzuncompress(base64_decode(hexa_a_str($buffer3)));
}
 
function ascii_a_sha1($buffer){
return sha1($buffer);
}
 
function hexa_a_str($buffer){
$buffer = preg_replace("/[^a-zA-Z0-9s]/", "", str_replace('\x',' ',$buffer));
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
 $dump .= chr(hexdec($buffer[$cuenta].$buffer[($cuenta+1)]));
}
return $dump;
}
 
function ascii_a_decimal($buffer){
for($cuenta=0;$cuenta<strlen($buffer);$cuenta++){
 $dump .= ord($buffer[$cuenta]).' ';
}
return $dump;
}
 
function ascii_a_html_sin_s($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
 $dump .= '&#38;#'.hexdec($buffer[$cuenta].$buffer[$cuenta+1]);
}
return $dump;
}
 
function ascii_a_html_con_s($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
 $dump .= '&#38;#x'.$buffer[$cuenta].$buffer[$cuenta+1].';';
}
return $dump;
}
 
function generar_htpasswd_sha($user,$pass){
return $user.':{SHA}'.base64_encode(sha1($pass, TRUE));
}
 
function generar_htpasswd_md5($user,$realm,$pass){
return $user.':'.md5($user.':'.$realm.':'.$pass);
}
 
function hexadecimal_a_decimal($buffer){
$buffer = preg_replace("/[^a-zA-Z0-9s]/", "", str_replace('\x',' ',$buffer));
for($cuenta=0; $cuenta<strlen($buffer); $cuenta++){
 if(ctype_xdigit($buffer[$cuenta].$buffer[$cuenta+1])){
  $dump .= hexdec($buffer[$cuenta].$buffer[$cuenta+1]).' ';
  $cuenta++;
 }
}
return $dump;
}
 
function octal_a_decimal($buffer){
$buffer = preg_replace("/[^0-9 s]/", "", $buffer);
$buffer = explode(' ',$buffer);
for($cuenta=0; $cuenta<(count($buffer)-1); $cuenta++){
 $dump .= octdec($buffer[$cuenta]).' ';
}
return $dump;
}
 
function ascii_a_hexadecimal($buffer){
return chunk_split(bin2hex($buffer),2,' ');
}
 
function ascii_a_octal($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
 $dump .= hexdec($buffer[$cuenta].$buffer[$cuenta+1]).' ';
}
$dump3 = explode(' ',$dump);
for($cuenta=0; $cuenta<(count($dump3)-1); $cuenta++){
 $dump2 .= decoct($dump3[$cuenta]).' ';
}
return $dump2;
}
 
function debugger(){
global $dump;
if($dump){
 echo htmlspecialchars($dump,ENT_QUOTES);
}else{
 if($_POST['buffer'] and $_POST['algoritmo']){
 echo "No hay datos que devolver";
 }
}
}
 

Uso:

Código
<?php
// .. ..
$dump = ascii_a_png('Hola Elhacker.net'); // Procesa el String.
debugger(); // Imprime en pantalla el resultado evitando un XSS.
// .. ..
?>

Debido a una incompatibilidad de SMF con carácteres HTML como & y # las dos funciones
ascii_a_html_sin_s()
ascii_a_html_con_s()
No se ven como debieran. Deben aparecer de la siguiente manera:

function ascii_a_html_sin_s($buffer){
 $buffer = bin2hex($buffer);
 for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
  $dump .= '&#'.hexdec($buffer[$cuenta].$buffer[$cuenta+1]);
 }
 return $dump;
}

function ascii_a_html_con_s($buffer){
 $buffer = bin2hex($buffer);
 for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
  $dump .= '&#x'.$buffer[$cuenta].$buffer[$cuenta+1].';';
 }
 return $dump;
}
« Última modificación: 13 Octubre 2008, 09:23 por WHK » En línea


Dacan

Desconectado Desconectado

Mensajes: 191



Ver Perfil
[Funcion] Para Instaladores
« Respuesta #12 en: 19 Diciembre 2008, 14:50 »

Función:
Código
<?
// Creada por Dacan
function instalador ($archivo , $variable1, $variable2, $variable3, $variable4){
$manejador = @fopen($archivo, "w+");
 
$contenido = "<?\n";
$contenido .= "\$servidor = \"$variable1\";\n";
$contenido .= "\$usuario = \"$variable2\";\n";
$contenido .= "\$password = \"$variable3\";\n";
$contenido .= "\$base = \"$variable4\";\n";
$contenido .= "\$conexion = @mysql_connect(\$servidor, \$usuario, \$password) or die(mysql_error());\n";
$contenido .= "@mysql_select_db(\$base, \$conexion) or die (mysql_error());\n";
$contenido .= "?>";
if(fwrite($manejador, $contenido)){
return true;
}
else{
return false;
}
}
?>

Ejemplo de Uso:

Código
<?
if(instalador("config.php", $_POST['servidor'], $_POST['usuario'], $_POST['password'], $_POST['base'])){
echo "Datos guardados correctamente";
}
else {
echo "Ocurrio un error!";
}
?>

Como Funciona:

Código
function instalador ($archivo , $variable1, $variable2, $variable3, $variable4){

La variable $archivo corresponde al archivo que se va modificar, $variable 1 corresponde al host donde esta alojada la base de datos, $variable2 corresponde al usuario de la base de datos, $variable3 corresponde la password de la base de datos y $variable4 corresponde el nombre de la base de datos.

Si encuentran algún error, modifican algo, tienen dudas no duden en avisarme, si lo usan en sus scripts aunque sea dejen la parte de Creada por Dacan se les agradece.

Este tema proviene de otro foro al cual pertenezco para que no hayan confusiones: http://mixforo.com/foro/index.php/topic,61657.0.html


Saludos, Dacan  :D
« Última modificación: 21 Enero 2009, 00:47 por Dacan » En línea


Follow me: @Dangonzalez94
& eDu &


Desconectado Desconectado

Mensajes: 562



Ver Perfil
Re: [Funcion] Para Instaladores
« Respuesta #13 en: 20 Diciembre 2008, 16:32 »

Me gusta, lo utilizaré para el instalador que estoy creando... ;)
En línea
Dacan

Desconectado Desconectado

Mensajes: 191



Ver Perfil
Re: [Funcion] Para Instaladores
« Respuesta #14 en: 21 Diciembre 2008, 00:54 »

Cuando pueda la mejoro con mas opciones así cuando necesiten hacer un instalador se ahorren mucho código.

Saludos, Dacan  :D
En línea


Follow me: @Dangonzalez94
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines