Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   FAQ's de PHP (http://www.forosdelweb.com/f18/faqs-php-530600/)

RUX 20/06/2007 06:36

Re: FAQ's de PHP
 
Temas: Emails anti-SPAM.

Pregunta: ¿Como puedo mostrar correos electrónicos en mi Web sin que sea rastreado por robots spam y así preservar la privacidad de mis usuarios?

Respuesta: Existen diversas formas de hacer esto, pero el método más fiable y funcional, es mostrar la dirección de correo electrónico como una imagen:

Código PHP:

$_GET['texto'] = "[email protected]"## Email que queremos proteger
$length strlen($_GET['texto']) * 6;
header("Content-type: image/png");
$im imagecreate($length14);
imagecolorallocatealpha($im25500127);
$color imagecolorallocate($im000);
imagestring($im200$_GET['texto'], $color);
imagepng($im);
imagedestroy($im); 

Para mostrarlo simplemente habría que llamarlo de forma natural:

Código HTML:

<img src="email.php" />
Si queremos que esto sea funcional de manera dinámica usamos:

Código HTML:

<img src="[email protected]" />
y eliminamos del código la siguiente línea:

Código PHP:

$_GET['texto'] = "[email protected]"

SALUDOS
Ruymán Trujillo

daenor 10/07/2007 09:18

Valores XML a Mysql utilizando PHP
 
Tema: XML a Mysql utilizando por PHP
Pregunta: ¿Cómo puedo pasar valores de un archivo XML a una base MySQL utilizando PHP?

Respuesta:

Comunidad querida, investigando, me pareció interesante publicar esto.
Un proceso generalizado, para su entendimiento :)

archivo.xml:
Código PHP:

<?xml version "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="items.xsd">
    <campos>
        <valor1>12351</valor1>
        <valor2>Viento</valor2>
        <valor3>sgsfgds4</valor3>
        <valor4>Idggdssg</valor4>
    </campos>
    <campos>
        <valor1>12352</valor1>
        <valor2>Agua</valor2>
        <valor3>fdgdg 204</valor3>
        <valor4>Isdg  rthyh56 h</valor4>
    </campos>
</VFPData>


Código PHP:

<?php
  $g_itemss 
= array();
  
$g_elem_item null;
  
  function 
startElement$parser$name$attrs 
  {
  global 
$g_itemss$g_elem_item;
  if ( 
$name == 'CAMPOS' $g_itemss []= array();
  
$g_elem_item $name;
  }
  
  function 
endElement$parser$name 
  {
  global 
$g_elem_item;
  
$g_elem_item null;
  }

  function 
textData$parser$text )
  {
  global 
$g_itemss$g_elem_item;
  if ( 
$g_elem_item == 'VALOR1' ||
  
$g_elem_item == 'VALOR2' ||
  
$g_elem_item == 'VALOR3' ||
  
$g_elem_item == 'VALOR4' )
  {
  
$g_itemsscount$g_itemss ) - ][ $g_elem_item ] = $text;
  }
  }
  
  
$parser xml_parser_create();
  
  
xml_set_element_handler$parser"startElement""endElement" );
  
xml_set_character_data_handler$parser"textData" );
  
  
$f fopen'archivo.xml''r' );
  
  while( 
$data fread$f4096 ) )
  {
  
xml_parse$parser$data );
  }
  
  
xml_parser_free$parser );
  
  foreach( 
$g_itemss as $item_booked )
  {

    
$numorden $item_booked['valor1'];
    
$tipoint $item_booked['valor2'];
    
$numoper $item_booked['valor3'];
    
$sector $item_booked['valor4'];
    

include(
"config.php"); //archivo de conexión a la base de datos

//////////////////////////////////////
//////////////////////////////////////
    
mysql_query("INSERT INTO tabla (mis_campos)values($mis_variables)")or die(mysql_error());
    
mysql_free_result($grabaITEMS);
    
mysql_close ();
}
?>


Espero que sirva!!

Saludos!
Daenor :)

nachopro 28/08/2007 13:15

Captcha para formularios
 
Tema: Captcha para formularios

Pregunta: ¿Cómo puedo evitar los posts de bots y/o spammers en mi sistema de formularios?

Respuesta:

Hola, les dejo una solución que acabo de crear:

consta de tres archivos: formulario.php, texto_a_imagen.php y la_fuente.ttf.

formulario.php
Código PHP:

<?php
session_start
();
if (!isset(
$_SESSION['captcha']) || empty($_SESSION['captcha']))
{
    
// Si no hay código de seguridad...
    
$_SESSION['captcha'] = substr(md5(time().microtime()), 08); // Creo código de seguridad aleatorio
}

if (
$_POST['submit'])
{
    if (
$_POST['codigo_seguridad'] != $_SESSION['captcha'])
    {
        
// Posible BOT Spammer en nuestro sistema
        
unset($_SESSION['captcha']); // Borro la clave captcha para que al recargar la página se crée una nueva
        
$_SESSION['mensaje_error'] = 'No has escrito bien el código de seguridad'// Asigno un mensajito
        
header('Location: '.$_SERVER['PHP_SELF']); // Redirecciono a la misma página
        
exit(); // Nos asegurames que el script termine acá
    
}

    
// Ponemos el código de nuestro interés.
    
echo '<p>No eres un bot, o al menos eso nos hiciste creer :P</p>';
}

// -- Fin del sistema anti-bot

if ($_SESSION['mensaje_error'])
{
    echo 
'<p>'.$_SESSION['mensaje_error'].'</p>';
    unset(
$_SESSION['mensaje_error']);
}
?>

<form method="post" action="<? echo $_SERVER['PHP_SELF']; ?>">
    <fieldset>
        <legend>Formulario</legend>
        <label for="email">E-mail:</label>
        <input type="text" name="email" id="email" />

        <label for="clave">Clave:</label>
        <input type="password" name="clave" id="clave" />

        <label for="captcha">C&oacute;digo de seguridad:</label>
        <img src="texto_a_imagen.php" id="captcha" />

        <label for="codigo_seguridad">Repetir c&oacute;digo de seguridad:</label>
        <input type="text" name="codigo_seguridad" id="codigo_seguridad" />
    </fieldset>
    <input type="submit" name="submit" value="Continuar" />
</form>

texto_a_imagen.php
Código PHP:

<?php
session_start
();

$texto $_SESSION['captcha']; // Tomo el código de seguridad creado en formulario.php
$fuente 'amaze.ttf';
$fuente_tamano 21;

$ancho 110;
$alto 35;

$img imagecreate($ancho$alto);
imagecolorallocate($img255255255); // Color del fondo

$color_texto imagecolorallocate($img13819077); // Color del texto
imagettftext($img$fuente_tamano0526$color_texto$fuente$texto);

header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
?>

Espero les sea útil ;)

Les dejo el link comprimido de los 3 archivos por si a alguien le interesa ;)
php_captcha.7z (37 KB)
php_captcha.zip (43 KB)

nicolaspar 06/09/2007 14:42

Re: FAQ's de PHP
 
Tema: Fechas
Pregunta:
Hay manera de lograr multiples formatos en español sobre una fecha?

Respuesta: No, pero con la siguiente función se puede lograr todos los formatos que necesites, yo la hice especificamente para un proyecto, pero se puede adaptar facilmente, y de no entender como pueden preguntar en el foro de php.

Estos serían algunos ejemplos:
Código PHP:

#Example:
get_date_spanish(time(), true'month'); # return Enero
get_date_spanish(time(), true'month_mini'); # return ENE
get_date_spanish(time(), true'Y'); # return 2007
get_date_spanish(time());#return 06 de septiempre, 12:31 hs 

Código PHP:

#Power by nicolaspar 2007 - especific proyect
function get_date_spanish$time$part false$formatDate '' ){
    
#Declare n compatible arrays
    
$month = array("","enero""febrero""marzo""abril""mayo""junio""julio""agosto""septiempre""diciembre");#n
    
$month_execute "n"#format for array month

    
$month_mini = array("","ENE""FEB""MAR""ABR""MAY""JUN""JUL""AGO""SEP""DIC");#n
    
$month_mini_execute "n"#format for array month

    
$day = array("domingo","lunes","martes","miércoles","jueves","viernes","sábado"); #w
    
$day_execute "w";
    
    
$day_mini = array("DOM","LUN","MAR","MIE","JUE","VIE","SAB"); #w
    
$day_mini_execute "w";

/*
Other examples:
    Whether it's a leap year
    $leapyear = array("Este año febrero tendrá 28 días"."Si, estamos en un año bisiesto, un día más para trabajar!"); #l
     $leapyear_execute = "L";
*/

    #Content array exception print "HOY", position content the name array. Duplicate value and key for optimization in comparative
    
$print_hoy = array("month"=>"month""month_mini"=>"month_mini");

    if( 
$part === false ){
        return 
date("d"$time) . " de " $month[date("n",$time)] . ", "date("H:i",$time) ." hs";
    }elseif( 
$part === true ){
        if( ! empty( 
$print_hoy[$formatDate] ) && date("d-m-Y"$time ) == date("d-m-Y") ) return "HOY"#Exception HOY
        
if( ! empty( ${$formatDate} ) && !empty( ${$formatDate}[date(${$formatDate.'_execute'},$time)] ) ) return ${$formatDate}[date(${$formatDate.'_execute'},$time)];
        else return 
date($formatDate$time);
    }else{
        return 
date("d-m-Y H:i"$time);
    }



nicolaspar 07/09/2007 08:02

Re: FAQ's de PHP
 
Tema: Archivos e includes
Pregunta:
Puedo incluir todos los php de un directorio?.
Respuesta: No se si está posteado, pero con ésta simple función es posible.

Código PHP:

#Power by nicolaspar 2007
function require_once_dir$path ){
    
$dir dir($path);
    while( ( 
$file $dir->read() ) !== false )
        if( 
is_file$path .'/'$file ) and preg_match'/^(.+)\.php$/i' $file ) )
            require_once( 
$path .'/'$file );
    
$dir->close();
}

#Example
require_once_dir'lib/db' );
require_once_dir'lib/email' ); 


nicolaspar 19/10/2007 07:46

Re: FAQ's de PHP
 
Tema: Parseo de strings
Pregunta: Puedo hacer que las url que esten en un texto se hagan "linkeables"?
Respuesta: Rejuntando ideas arme esta función:

Código PHP:

function ponerLinks$str ){
    
$tmp eregi_replace('((ftp|http|www)[-a-zA-Z0-9@:%_\+.~#?&//=]+)''<a href="\\1" target="_blank">\\1</a>'$str);
    
#Si esto se puede integrar en la regex sería mejor aún....
    
return str_replace('href="www.','href="http://www.'$tmp);


Ejemplo de uso:


Código PHP:

function ponerLinks$str ){
    
$tmp eregi_replace('((ftp|http|www)[-a-zA-Z0-9@:%_\+.~#?&//=]+)''<a href="\\1" target="_blank">\\1</a>'$str);
    
#Si esto se puede integrar en la regex sería mejor aún....
    
return str_replace('href="www.','href="http://www.'$tmp);
}

$str 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras tempor, pede at scelerisque cursus, www.arcunulla.com suscipit libero, iaculis tincidunt justo quam sit amet tortor. Donec quis elit. Vivamus nec sapien ut http://www.leo.com posuere consequat. http://Quisque.com.ar et nisl. Aenean dolor. Aenean blandit purus non felis. Sed elit justo, rutrum quis, ornare non, tincidunt blandit, nisl. Donec sodales massa non pede. In eleifend placerat risus. Nulla vitae elit vitae erat porttitor tristique. ftp://Phasellus.com.ar neque mi, imperdiet vel, mollis ac, placerat a, libero. Phasellus semper sodales ante. www.Mauris.com.cl placerat risus sollicitudin mauris. Donec at tellus. Aenean eu nulla. Curabitur mattis adipiscing augue. Suspendisse blandit, odio sit amet convallis volutpat, erat ante posuere tellus, quis ultricies lacus mi quis urna';
echo 
ponerLinks$str ); 


Italico76 04/11/2007 13:20

FAQ : como leer CSV en PHP
 
El siguiente es un ejemplo de como leer un CSV con PHP :-)

En el ejemplo leo "catego.txt", un CSV con DOS COLUMNAS delimitadas por "#"

Código PHP:

<?php 
// Leo archivo CSV de Excel
$sep "#"//defino separador del CSV
$archivo "\catego2.txt";  // path + archivo

$fp fopen $archivo "r" ); 
while (( 
$data fgetcsv $fp 1000 "," )) !== FALSE ) { // leo mientras haya lineas que leer

$i 0
foreach(
$data as $i=> $row ) {  // leo cada ROW  de DATA e incremento el inidice $i
$matriz explode$sep$row);
echo 
$matriz[1]." :: ".$matriz[0]."<p/>";  // muestro las celdas en orden inverso



fclose $fp ); 
?>

Enjoy! :risa:

chilenozzz 04/11/2007 17:27

Re: FAQ's de PHP
 
¿Cómo obtener la fecha en formato dd/mm/aaaa HH:MM:SS a partir de un campo "OleDate" (un campo fecha) desde un archivo Excel?

NOTA: Esto es válido para cuando se obtiene la fecha a partir de un Excel con la librería Spreadsheet_Excel_Reader de PEAR en PHP:

Código PHP:

$data->sheets[$numero_hoja]['cells'][$i][$j

El número que retorna es un DOUBLE. Por ejemplo, si la fecha es 01/09/2007 00:15:00, esto aparecerá como valor 39326.0104167.

Para regresar al formato válido en PHP, aplicar lo siguiente

Código PHP:

$fecha1 = (39326.0104167 25569.833299) * 86400
echo (
date("d/m/Y H:i:s",$fecha1)."<br />"); 

Esto retorna 01/09/2007 00:15:02

Como pueden ver, tiene un margen de error de 2 segundos. Esto se puede corregir jugando con el valor 25569.833299, agregando aún más decimales para hacer el cálculo más preciso.

Saludos.

Marvin 12/11/2007 12:06

Re: FAQ's de PHP
 
Tema: Codificacion
Pregunta: ¿Como puedo mostrar acentos y ñ sin que los reemplace por ? u otro caracter extraño?
Respuesta:
Se debe codificar tanto la pagina php como la pagina html con las siguientes lineas.
Código PHP:

header'Content-Type: text/html;charset=utf-8' ); 

Código HTML:

<META http-equiv=Content-Type content="text/html; charset=utf-8">
Tambien es posible agregar el content-type desde php.ini:
Código:

default_charset = "utf-8"
Si nada de lo anterior sirve para datos extraidos de una base de datos con codificacion X a una pagina con codificacion Y probar con:
utf8_decode (Convierte una cadena codificada UTF-8 a ISO-8859-1) o
utf8_encode (Codifica una cadena ISO-8859-1 a UTF-8)

Suerte! :arriba:

Italico76 23/11/2007 09:04

Re: FAQ's de PHP
 
Como resuelvo un posible abuso de mayusculas en texto ? como se que se esta abusando de las mayusculas ?

Respuesta: utlizo la funcion resolve_abuse($cadena) :pirata:


Código PHP:

<?php

Function resolve_abuse($str){
 if (
abuse_capitals($str)) {
  return(
strtolower($str));
 }else{
  return(
$str);
 }
}

Function 
abuse_capitals($str){
$temp pesa_letras($str);
//echo $temp;
if ($temp<83){
 return (
true);
 }else{
 return (
false);
}
}

Function 
pesa_letras($str){
// MENOS de 83 es abuso de mayusculas
$largo=strlen($str);

$peso=0;
for (
$i=0;$i<$largo;++$i){
$peso=$peso ord($str[$i]);
}

if (
$largo>0){
return( 
$peso/$largo);
}
else{
return(
100); // todo ok
}

}

?>

Código PHP:

<?php
$str
="LETRAS DE CANCIONES de TODOS los ARTISTAS";
echo 
resolve_abuse($str); // arregla posibles abusos de mayusculas
?>

:adios:

rustty 20/02/2008 23:03

Crear select de paises con php
 
Tema: Crear select de paises con php

Pregunta: Como no complicarme la vida creando un simple select con los paises?

Respuesta:
Para no complicarte la vida haciendo un simple select de los paises, utilizando html y durar 24 en estos ( ya que yo casi las duro, por que no conseguía una lista en español por hay :D) solo utiliza esta funcion que esta organizada alfabeticamente..

ESPERO QUE LES FUNCINE, como me funciono a mi ;)

Código PHP:

<?php
function paises($nombre_del_select){
    
$array_paises = array("Elige tu pais","Republica Dominicana","Afganistan","Africa del Sur","Albania","Alemania","Andorra","Angola","Antigua y Barbuda","Antillas Holandesas","Arabia Saudita","Argelia","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarusia","Belgica","Belice","Benin","Bermudas","Bolivia","Bosnia","Botswana","Brasil","Brunei Darussulam","Bulgaria","Burkina Faso","Burundi","Butan","Camboya","Camerun","Canada","Cape Verde","Chad","Chile","China","Chipre","Colombia","Comoros","Congo","Corea del Norte","Corea del Sur","Costa de Marfíl","Costa Rica","Croasia","Cuba","Dinamarca","Djibouti","Dominica","Ecuador","Egipto","El Salvador","Emiratos Arabes Unidos","Eritrea","Eslovenia","España","Estados Unidos","Estonia","Etiopia","Fiji","Filipinas","Finlandia","Francia","Gabon","Gambia","Georgia","Ghana","Granada","Grecia","Groenlandia","Guadalupe","Guam","Guatemala","Guayana Francesa","Guerney","Guinea","Guinea-Bissau","Guinea Equatorial","Guyana","Haiti","Holanda","Honduras","Hong Kong","Hungria","India","Indonesia","Irak","Iran","Irlanda","Islandia","Islas Caiman","Islas Faroe","Islas Malvinas","Islas Marshall","Islas Solomon","Islas Virgenes Britanicas","Islas Virgenes (U.S.)","Israel","Italia","Jamaica","Japon","Jersey","Jordania","Kazakhstan","Kenia","Kiribati","Kuwait","Kyrgyzstan","Laos","Latvia","Lesotho","Libano","Liberia","Libia","Liechtenstein","Lituania","Luxemburgo","Macao","Macedonia","Madagascar","Malasia","Malawi","Maldivas","Mali","Malta","Marruecos","Martinica","Mauricio","Mauritania","Mexico","Micronesia","Moldova","Monaco","Mongolia","Mozambique","Myanmar (Burma)","Namibia","Nepal","Nicaragua","Niger","Nigeria","Noruega","Nueva Caledonia","Nueva Zealandia","Oman","Pakistan","Palestina","Panama","Papua Nueva Guinea","Paraguay","Peru","Polinesia Francesa","Polonia","Portugal","Puerto Rico","Qatar","Reino Unido","Republica Centroafricana","Republica Checa","Republica Democratica del Congo","Republica Eslovaca","Reunion","Ruanda","Rumania","Rusia","Sahara","Samoa","San Cristobal-Nevis (St. Kitts)","San Marino","San Vincente y las Granadinas","Santa Helena","Santa Lucia","Santa Sede (Vaticano)","Sao Tome & Principe","Senegal","Seychelles","Sierra Leona","Singapur","Siria","Somalia","Sri Lanka (Ceilan)","Sudan","Suecia","Suiza","Sur Africa","Surinam","Swaziland","Tailandia","Taiwan","Tajikistan","Tanzania","Timor Oriental","Togo","Tokelau","Tonga","Trinidad & Tobago","Tunisia","Turkmenistan","Turquia","Ucrania","Uganda","Union Europea","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Yemen","Yugoslavia","Zambia","Zimbabwe");
    
$cantidad_paises count($array_paises);
    echo 
'<select name="'.$nombre_del_select.'" id="'.$nombre_del_select.'">';
    for(
$i 0$i<$cantidad_paises$i++){
        
$array_paises_i $array_paises[$i];
        echo 
'<option value="'.$array_paises_i.'"'
            if(
$_POST["$nombre_del_select"]=="$array_paises_i"){
                    echo 
"selected";
            }
        echo 
'>'.$array_paises_i.'</option>';
    }
    echo 
'</select>';
}
//como llamar la function?
//paises("select_paises");
?>


nicolaspar 02/05/2008 14:39

Re: FAQ's de PHP
 
Tema: Url/Paginado/Propagar datos
Pregunta: Tengo manera de pasar todo el query string (GET) de una pagina sin un valor? (así por ejemplo puedo pasar datos de una pagina a otra en un paginado sin poner casa dato a mano y sin repetir la variable "pagina")
Respuesta: Tengo esta función que te da toda la url menos el parámetro que quieras:


Código PHP:

function querystringSinParametro($parametro){
    return 
preg_replace('/[\&\?]?'.$parametro.'=[^\&]*/','', (empty($_SERVER['QUERY_STRING'])?'':$_SERVER['QUERY_STRING']) );


De ésta manera, en vez de usar:

Código PHP:

<a href="listado.php?pagina=<?=$pagina+1;?>&var1=<?=$var1;?>&var2=<?=$var2;?>&var3=<?=$var3;?>">Siguiente página </a>

Podemos usar:

Código PHP:

<? $qs querystringSinParametro('pagina');?>
<a href="listado.php?pagina=<?=$pagina+1;?>&<?=$qs;?>">Siguiente página </a>


trasgukabi 13/05/2008 18:37

Aporte: Conversor CNAE-93 Rev. 1 a CNAE-2009
 
Tema: Conversor CNAE-93 Rev. 1 a CNAE-2009
Pregunta: Pasar de código CNAE-93 a CNAE-2009
Respuesta:

Hola, os dejo aquí la dirección de un Conversor CNAE-93 Rev. 1 a CNAE-2009 que he hecho para mi web.

Fichero .RAR. 67.59KB
CNAE ERINTERNET

Para verlo funcionando:
CNAE ERINTERNET EN ACCIÓN

Creative Commons Reconocimiento-No comercial 2.5 España License.
http://i.creativecommons.org/l/by-nc/2.5/es/88x31.png

Espero que a alguien le sea de ayuda.

nicolaspar 22/05/2008 19:45

Respuesta: FAQ's de PHP
 
Tema: Formato de fechas
Pregunta: Necesito crear diferentes formatos de fechas para cada uno de los idiomas de mi sitio, ya que no es lo mismo el formato ingles que el español, es posible definir esto en la configuración del idioma?
Respuesta: Pondré un ejemplo con 3 tipos de fechas (corta, media y larga) que dice ser así:

Código PHP:

 <?
 
/***
 la var $setting puede estar seteada para un idioma (ej, español.php) determinado, pudiendo tener para cada idioma diferentes formatos
 ***/
 
 /********=))==))==))=********
 EN EL ARCHIVO PHP DE IDIOMAS:
 ********=))==))==))=********/
 
 /***
 Formato de fechas validos, corto, medio y largo, pueden personalizar el suyo de así necesitarlo:
 ***/
 
$setting['FORMATO_FECHA_CORTO'] = 'd/m/Y';
 
$setting['FORMATO_FECHA_MEDIO'] = '%mes% %de% Y';
 
$setting['FORMATO_FECHA_LARGO'] = '%dia% %de% %mes% %de% Y'// se le pueden poner cosas como: \H\o\y \e\s %dia%, o agregar un setting tal cual lo es "de" que se llame "hoy" y otro "es". Además de agregar cualquier comodín válido de www.php.net/date
 
 
 /***
 Para cada caso del ejemplo tengo dias, meses y el texto "de"
 ***/
 
$setting['DIAS'] = array('Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado');
 
$setting['MESES'] = array('positionZero','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
 
$setting['DE'] = 'de';
 
 
 
 
/********=))==))==))=********
 EN EL ARCHIVO PHP DE FUNCIONES:
 ********=))==))==))=********/
 
 /**
 Function formatearFechaIdiomas
 In: timestamp, variable setting, formato (corto, medio, largo)
 **/
 
function formatearFechaIdiomas$time, &$setting$formato 'corto'){
     
$no = array( '%dia%''%mes%''%de%' ); #Esto es lo que escribimos en el setting, para que sea más legible para el administrador del sitio. Se pueden agregar tantas variantes se crean necesarias, tendiendo su posición declarada en el array $setting
     
$si = array( '%\d\i\a%''%\m\e\s%''%\d\e%' ); #No se le pude pasar a date cosas como "mes", ya que las tres letras son valores reservados, hay que escaparlos.
     
$traduccion = array( $setting['DIAS'][date("w",$time)], $setting['MESES'][date("n",$time)], $setting['DE'] ); #Y esta es la traducción de cada elemento
     #FORMATO CORTO
     
if( $formato == 'corto' ) return date$setting['FORMATO_FECHA_CORTO'], $time);
     
#FORMATO MEDIO
     
if( $formato == 'medio' ){
         
$setting['FORMATO_FECHA_MEDIO'] = str_replace$no$si$setting['FORMATO_FECHA_MEDIO'] );
         return 
str_replace$no$traducciondate$setting['FORMATO_FECHA_MEDIO'], $time) );
     }
     
#FORMATO LARGO
     
if( $formato == 'largo' ){
         
$setting['FORMATO_FECHA_LARGO'] = str_replace$no$si$setting['FORMATO_FECHA_LARGO'] );
         return 
str_replace$no$traducciondate$setting['FORMATO_FECHA_LARGO'], $time) );
     }
     return 
FALSE;    
 }
 
 
 
/********=))==))==))=********
 EJEMPLO DE USO, la parte simple:
 ********=))==))==))=********/
 
echo formatearFechaIdiomastime(), $setting'corto') . "<hr>"#Out: 12/6/2008
 
echo formatearFechaIdiomastime(), $setting'medio') . "<hr>"#Out: Junio de 2008
 
echo formatearFechaIdiomastime(), $setting'largo') . "<hr>"#Out: Domingo 12 de Junio de 2008
 
 
?>


Surfiction 27/05/2008 20:15

Respuesta: FAQ's de PHP
 
Tema: Extencion Archivos
Pregunta: Como puedo saber la extencion de un archivo?
Respuesta: Usando la funcion explode() y end() de la siguiente manera:

Código PHP:

$nombre "nombre del archivo.puede tener puntos...mp3";
$partes explode("."$nombre);
$extencion end($partes);

echo 
"La Extencion es: $extencion"

Saludos

andrewp 29/07/2008 16:26

Respuesta: FAQ's de PHP
 
Tema: Traer valores de una base de datos MySQL a través de una COOKIE

Pregunta: ¿Cómo puedo traer la información de un registro en una base de datos MySQL con tan solo una COOKIE?

Respuesta: Esta respuesta la encontré extrayendo información de varios POSTS:

Para empezar necesitarías tener la conexión básica a la base de datos, luego incluír la siguiente línea de código. Tened en cuenta que 'usuario' es el ejemplo que uso como campo de la BD y $_COOKIE['usuario'] es el ejemplo de la cookie que tengo activa y verificada en mi PHP:

Código PHP:

$consulta"SELECT * FROM miTabla WHERE usuario = '".$_COOKIE['usuario']."'";
$resultado mysql_query ($consulta) or die ('Query failed: ' mysql_error()); 

Para extraer cualquier información contenida en un campo, bastará con extraer el nombre del mismo por medio de la función 'WHILE'. En mi ejemplo uso en nombre del usuario (nombre_usuario). Esta línea de código la puedes poner en cualquier parte de tu PHP:

Código PHP:

<?php while ($row mysql_fetch_array($resultado)) {
    echo 
$row['nombre_usuario']; } ?>

Saludos!

angarzafir 18/08/2008 21:18

Respuesta: FAQ's de PHP
 
Tema: Upload de Archivo

Pregunta: ¿Como configurar tu servidor para subir archivos pesados por medio de un script?

Respuesta:
Antes de hacer esto es necesario saber si tu servidor fue instalado como CGI. Para saberlo simplemente creando un script con la siguiente función, subelo a la raiz de tu servidor y ejecutalo.

../php_info.php
Código PHP:

<?php 
$tipo_sapi 
php_sapi_name(); 
if (
substr($tipo_sapi03) == 'cgi') { 
    echo 
"Est&aacute; usando PHP CGI\n"
} else { 
    echo 
"No est&aacute; usando PHP CGI\n"

?>

Si dices que estas usando CGI ¡Perfecto! entonces esto te servira.
Simplemente crear un archivo de texto con la siguiente información y nombralo php.ini. Debes subir este archivo en la carpeta donde esta el script que subira el archivo al servidor. Es decir, si el script upload_archivo.php esta en la carpeta upload: el php.ini debes incluirlo dentro de la carpeta upload.

../carpeta_script/php.ini
Código PHP:

upload_max_filesize 100M
post_max_size 
100M
max_execution_time 1000
max_input_time 1000 

Donde puedes cambiar los valores. En este caso lo configure para aceptar archivos de hasta 100megas y aumente el tiempo de ejecución del script.

Ya con esto y un script de upload archivo puedes subir archivos de alto peso. Recomiendo usar un progressbar para irle avisando al usuario de como va la subida.

Dejo el tema donde hice esta pregunta en caso de querer más nformación.

También pueden ayudarse de:
http://blog.unijimpe.net/upload-de-archivos-2mb-php/

Saludos. Espero halla sido de ayuda, fue mi primer aporte a esta gran comunidad.

eContento 25/08/2008 05:24

Respuesta: FAQ's de PHP
 
Tema: Generar un fichero rss.xml

Pregunta: ¿Cómo puedo generar un feed o RSS de mi web?

Respuesta: Suponemos que la web tiene artículos y estos están en una base de datos. El código para generar ese RSS y que otras webs os puedan sindicar es:

Código PHP:

<?php
  
include("./conexionBBDD.php");
    
$link=Conectarse();
    
$archivo fopen("/rss.xml""w");
    if (
$archivo) {
        
fputs ($archivo"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n");
        
fputs ($archivo"<rss version=\"2.0\">\n");
        
fputs ($archivo"\n");
        
fputs ($archivo"<channel>\n");
        
fputs ($archivo"     <title>e-Contento</title>\n");
        
fputs ($archivo"     <link>http://e-contento.com</link>\n");
        
fputs ($archivo"     <language>es-ES</language> \n");
        
fputs ($archivo"     <description>Web que...</description>\n");

        
$result=mysql_query("SELECT titulo, entradilla, id, DATE_FORMAT(fecha,'%a, %d %b %Y') AS fecha FROM articulo ORDER BY fecha DESC LIMIT 0,25",$link);
        if (
$result){
            while(
$row mysql_fetch_array($result)) {
                
$stTitulo $row[titulo];
                
$stTitulo html_entity_decode($stTitulo);
                
                
$stDescription $row[entradilla];
                
$stDescription str_replace ("src=\"/img/""src=\"http://e-contento.com/img/"$stDescription );
                
$stDescription str_replace ("src=\"img/""src=\"http://e-contento.com/img/"$stDescription );
                
                
fputs ($archivo"     <item>\n");
                
fputs ($archivo"             <title><![CDATA[".$stTitulo."]]></title>\n");
                
fputs ($archivo"             <pubDate>".$row[fecha]."</pubDate>\n");
                
fputs ($archivo"             <link>http://e-contento.com/c_articulo.php?id=".$row["id"]."</link>\n");
                
fputs ($archivo"             <description><![CDATA[".$stDescription."]]></description>\n");
                
fputs ($archivo"     </item>\n");
            }
        }
        
fputs ($archivo"</channel>\n");
        
fputs ($archivo"</rss>\n");
        
    }
    
fclose ($archivo);
?>


nicolaspar 05/09/2008 15:13

Respuesta: FAQ's de PHP
 
Tema: Leer archivos (fuera de mi servidor)
Pregunta: Necesito leer archivos fuera de mi servidor, por ejemplo un rss, o una salida de un webservice o simplemente de una página cualquiera.
Respuesta: Si, podés usar file_get_contents, pero es mejor curl pero éste debe estar instalado en el server. Por si no sabemos que tenemos disponible en nuestro servidor podés usar la siguiente función:


Código PHP:

function getFile($archivo){
 if(
ini_get('allow_url_fopen')){
  
$ctx stream_context_create(array(
   
'http' => array(
    
'timeout' => 240
    
)
   )
  );
  
$contentfile_get_contents($archivo0$ctx);
 }else{
  
$ch curl_init ($archivo) ;
  
curl_setopt ($chCURLOPT_RETURNTRANSFER1) ;
  
$contentcurl_exec ($ch) ;
  
curl_close ($ch) ;
 }
 return 
$content;
}
 
//PHP 4.2.x < solo es necesario si se tiene esta versión de php
if (!function_exists('file_get_contents')) {
      function 
file_get_contents($filename$incpath false$resource_context null)
      {
          if (
false === $fh fopen($filename'rb'$incpath)) {
              
trigger_error('file_get_contents() failed to open stream: No such file or directory'E_USER_WARNING);
              return 
false;
          }
 
          
clearstatcache();
          if (
$fsize = @filesize($filename)) {
              
$data fread($fh$fsize);
          } else {
              
$data '';
              while (!
feof($fh)) {
                  
$data .= fread($fh8192);
              }
          }
 
          
fclose($fh);
          return 
$data;
      }
  } 

Y acá te dejo un ejemplo:
Código PHP:

echo getFile(\'http://www.forosdelweb.com/f18/faqs-php-530600/index7.html\'); 


Nathan_1979 11/09/2008 11:23

How to: Función que pone etiquetas <p> parrafos en un textarea :)
 
Tema: Poner etiquetas <p> en un textarea
Pregunta: Como agregar tags <p> en lugar de <br />
Respuesta:

Ante todo decir que es muy sencillo ahora que lo pienso pero bueno para que esté en el foro y le pueda ayudar al alguien que al igual que yo esta haciendo un sistema de comentarios o cualquier otro proyecto y le fallaba el tema de los párrafos :si:

Me puse la pilas ya hace tiempo con PHP, y viendo que en ningún lado no hay nada de cómo hacer que se respeten las etiquetas

Código HTML:

<p>Un párrafo</p>

en un textarea ( Bueno simplemente con la función
Código PHP:

nl2br 

pero no es suficiente ya que no es limpia del todo, deja el texto flotando en el HTML :borracho:

Me animé a realizar una función que con ayuda del nl2br que remplaza las nuevas linea

Código PHP:



y te las remplaza por
Código HTML:

<br />

Ahora que lo pienso se podia a ver realizado con replace o una variante.

Ok, empecemos!


Código PHP:

function crear_parrafos($comentario
{
    
$comentario=nl2br($comentario);
    
$comentario=explode('<br />'$comentario);
    
    
$comentario=implode("</p><p>"$comentario);
    
return 
$comentario;
}

$nick=$_POST['nick'];
$comentario=crear_parrafos($_POST['comentario']);


echo 
$nick."<br />";
echo 
"<p>".$comentario."</p>"

Antes de todo el formulario HTML
Código HTML:

<form action="#"" method="post" >

        <label for="nick">Nombre: *</label> <input type="text" id="nick" name="nick" />
        <label for="comentario">Comentario: *</label><textarea  id="comentario" cols="4" rows="10" name="comentario"></textarea>
        <input type="submit" value="Enviar" />

</form>

Le pasamos 2 arrays
  1. $_POST['nick']
  2. $_POST['comentario']

Como vereis la función se llama crear_parrafos() que le paso un argumento que seria el array del POST del textarea, nos ayudamos de la función nl2br para saber donde están los saltos de linea, seguidamente empleamos la función explode que convierte todo el comentario en un array separando cada elemento del array a traves de <br />
Código HTML:

Primera linea usando la función nl2br para que muestren los saltos de linea y seguidamente explode para que nos convierta en un array, primera linea
<br />
Segundo linea, segunda linea

Ahora podriamos hacer $comentario[0] que nos mostraria:

"Primera linea usando la función nl2br para que muestren los saltos de linea y
seguidamente explode para que nos convierta en un array, primera linea"

ahora usamos la funcion implode que lo que hace es convertir nuestro array en una cadena pero con todos los elementos que tiene el array uniendolos con una cadena (En este caso lo uniremos con las etiquetas </p><p> .


Y a la hora de mostrarlo pondremos las etiquetas <p> de inicio que no realiza implode y la etiqueta </p> del parrafo ultimo del final.


Espero que os sea de utilidad.
Salu2!

korg1988 05/10/2008 16:58

Respuesta: FAQ's de PHP
 
Tema: Funciones
Pregunta: ¿Como obtengo numeros aleatorios (random) sin que se repitan entre si (unicos)?

Respuesta:

Podemos crear una funcion, la llame uni_rands (o sea , unique rands o randoms unicos, o aleatorios unicos o lo que sea :borracho:)

Aca va el codigo de la funcion
Código PHP:

function uni_rands($cant$ini$fin)
{
    
$ns = array();
    if((
$fin $ini 1) >= $cant) {
        while(
$ct $cant)
        {
            
$rnd rand($ini$fin);
            if(!
in_array($rnd$ns)) {
                
$ns[$ct] = $rnd;
                ++
$ct;
            }
        }
    } else {
        die(
"Error: Rango inferior a la Cantidad");
    }
    return 
$ns;


Y aca una implementacion de Ejemplo
Código PHP:

foreach(uni_rands(10110) as $numero)
{
    echo 
$numero."\n";


Como veran la funcion devuelve un array, y los argumentos que necesita son, la cantidad de numeros que queremos obtener, el numero minimo, y el numero maximo

Saludos
Suerte

korg1988 05/10/2008 18:03

Respuesta: FAQ's de PHP
 
Tema: Arrays
Pregunta: ¿Como se cuantos elementos estan repetidos en un array?

Respuesta:

Aca cree una funcion!.. espero que a muchos les sirva para solucionar ese problema

Código PHP:

function contar_repeticiones($array)
{
    
$repetidos 0;
    
$ya_duplicados = array();
    foreach(
$array as $item)
    {
        for(
$u=0;$u<sizeof($array); $u++)
        {
            if(
$item == $array[$u] && !in_array($item$ya_duplicados))
            {
                ++
$cont;
            }
        }
        
        if(
$cont >= 2)
        {
            
array_push($ya_duplicados$item);
            
$repetidos++;
        }
        
        
$cont 0;
    }
    return 
$repetidos;


entonces para usarla hacemos lo siguiente

Código PHP:

$array_de_ejemplo = array("hola""chau""chau""hola"1531);
echo 
"En este array hay ".contar_repeticiones($array_de_ejemplo)." elementos Repetidos"

Y la salida seria
"En este array hay 3 elementos Repetidos!"

Saludos y espero que les sirva

okram 07/10/2008 22:00

Respuesta: FAQ's de PHP
 
Tema: Funciones
Pregunta: ¿Como obtengo numeros aleatorios (random) sin que se repitan entre si (unicos)? (Otro método)

Respuesta:

Vamos a crear una función que se llame igual a la que puso korg1988 dos mensajes arriba: uni_rands()

Aca va el codigo de la funcion
Código php:
Ver original
  1. function uni_rands($cantidad, $inicio, $fin) {
  2.     $n = range($inicio, $fin);
  3.     foreach(array_rand($n, $cantidad) as $i)
  4.         $ns[] = $n[$i];
  5.     return $ns;
  6. }
El uso es el mismo
Código php:
Ver original
  1. foreach(uni_rands(7, 20, 40) as $numero) {
  2.     echo $numero."\n";
  3. }
La funcion devuelve también un array, y los argumentos que necesita son, la cantidad de numeros que queremos obtener, el numero minimo, y el numero maximo. La diferencia está en el código de la función, el cuál es más sencillo (Véase range(), array_rand())

Saludos, :adios:

Carxl 14/10/2008 17:18

Respuesta: FAQ's de PHP
 
Tema: Sesiones
Pregunta: Cómo destruyo la sesión al cerrar el navegador?
Respuesta: Configurando tu php.ini

1. Abre tu php.ini
2. Busca la linea "session.use_only_cookies" y ponla en Off
3. Asegúrate que "session.use_trans_sid" esté en Off o en 0(cero).
4. Guarda la modificación y reinicia tu servicio web.(normalmente reiniciando apache:borracho:)

Saludos:adios:

Marvin 20/11/2008 08:54

Respuesta: FAQ's de PHP
 
Tema: Fechas
Pregunta: Cómo puedo saber cuantos dias hay entre dos fechas (PHP)?
Respuesta:
Código php:
Ver original
  1. //fecha inicio  01/01/2008
  2. //fecha fin 05/01/2008
  3. $fechaInicio    = explode('/',"01/01/2008");
  4. $fechaFinal     = explode('/',"05/01/2008");
  5. $ini = mktime(12,0,0,$fechaInicio[1],$fechaInicio[0],$fechaInicio[2]);
  6. $fin = mktime(12,0,0,$fechaFinal[1],$fechaFinal[0],$fechaFinal[2]);
  7. $x = (floor(($fin - $ini)/60/60/24));
  8. echo 'Dias entre las fechas dadas: '.$x;
Suerte! :arriba:

nicolaspar 03/12/2008 13:45

Respuesta: FAQ's de PHP
 
Tema: Strings
Pregunta: Como puedo aplicar un ucfirst a un string si éste comienza con signos?
Respuesta: Mira el siguiente ejemplo:

Código php:
Ver original
  1. <?
  2. /* En tus funciones copia estas dos*/
  3. function uc_first_aux($str){
  4. return ucfirst($str[1]);
  5. }
  6. function uc_first($str){
  7. return preg_replace_callback('/([a-z]){1}/i',"uc_first_aux",$str,1);
  8. }
  9.  
  10. #luego, a un string como este
  11. $str = strtolower('¿¿¡¡COMO ESTÁN USTEDES!!??');
  12.  
  13. #Lo tratas así:
  14. echo uc_first($str); #out: ¿¿¡¡Como están ustedes!!??
  15. ?>

okram 10/01/2009 12:50

Respuesta: FAQ's de PHP
 
Tema: Cookies
Pregunta:
¿Por qué mi cookie creada con PHP funciona en algunas páginas y en otras no?

Respuesta:
Para resolver este pregunta debemos primero conocer cómo funciona la función setcookie(), con la cuál creamos las cookies con PHP.

La función setcookie acepta 6 parámetros (7 desde PHP 5.2). Usualmente las cookies las creamos con los tres primeros:
Código PHP:

setcookie(
    
'nombre_de_la_cookie'// Nombre de la cookie
    
'valor de la cookie'// Valor de la cookie
    
time() + 24 60 60 // Tiempo en segundos
); 

Y generalmente esto funciona bien. Pero muchas veces caemos en que la cookie está disponible en determinadas páginas y en otras no dentro del mismo sitio.

Esto se debe a que las cookies existen para el directorio en el que han sido creadas. Por ejemplo. Tengo un formulario de login y un script PHP que lo procesa. Ambos archivos están en una carpeta login/ dentro del directorio raíz. Aquí ocurre el problema. La cookie será válida para todos los script ubicados en login/ (o sus subdirectorios), mas no para el resto del sitio.

Para solucionar esto, hay que definir el 4to parámetro de la función setcookie(). El valor por defecto es el directorio actual del script que crea la cookie. Al asignarle el valor de '/' haremos que la cookie que se genera esté disponible en el sitio entero, independientemente del directorio donde ha sido creada.

Código PHP:

setcookie(
    
'nombre_de_la_cookie',
    
'valor de la cookie',
    
time() + 24 60 60,
    
'/' // La cookie estará disponible en el sitio entero
); 

Una manera de evitar tener que estar indicando el directorio cada vez que creamos una cookie es crear una función auxiliar que reciba los tres parámetros que siempre usamos, y que haga la llamada a la función "legal" setcookie con el 4to parámetro añadido.

:adios:

cvander 24/03/2009 06:31

Respuesta: FAQ's de PHP
 
Cerramos el FAQ para experimentar trabajando futuras consultas desde el Wiki:

http://www.forosdelweb.com/wiki/PHP


La zona horaria es GMT -6. Ahora son las 20:30.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.