Foros del Web » Programando para Internet » PHP »

FAQ's de PHP

Estas en el tema de FAQ's de PHP en el foro de PHP en Foros del Web. 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 ...

  #181 (permalink)  
Antiguo 20/06/2007, 06:36
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
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
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #182 (permalink)  
Antiguo 10/07/2007, 09:18
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 19 años, 4 meses
Puntos: 1
De acuerdo 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 :)
__________________
Diseñador y Desarrolador en Proyecto81 WebStudio
  #183 (permalink)  
Antiguo 28/08/2007, 13:15
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
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)
  #184 (permalink)  
Antiguo 06/09/2007, 14:42
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
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);
    }

__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #185 (permalink)  
Antiguo 07/09/2007, 08:02
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
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' ); 
__________________
Mi punto de partida es Que Bueno Lo Nuevo

Última edición por nicolaspar; 24/09/2007 a las 14:15
  #186 (permalink)  
Antiguo 19/10/2007, 07:46
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
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 ); 
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #187 (permalink)  
Antiguo 04/11/2007, 13:20
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
De acuerdo 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!

Última edición por Italico76; 04/11/2007 a las 16:54
  #188 (permalink)  
Antiguo 04/11/2007, 17:27
Avatar de chilenozzz  
Fecha de Ingreso: junio-2004
Ubicación: Chile
Mensajes: 44
Antigüedad: 19 años, 10 meses
Puntos: 1
Exclamación 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.
  #189 (permalink)  
Antiguo 12/11/2007, 12:06
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
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!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Última edición por Marvin; 30/07/2008 a las 03:46 Razón: Agrego informacion para problemas puntuales
  #190 (permalink)  
Antiguo 23/11/2007, 09:04
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
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)


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
?>
__________________
Salu2!
  #191 (permalink)  
Antiguo 20/02/2008, 23:03
Avatar de rustty  
Fecha de Ingreso: junio-2005
Mensajes: 68
Antigüedad: 18 años, 10 meses
Puntos: 1
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");
?>

Última edición por rustty; 20/02/2008 a las 23:30
  #192 (permalink)  
Antiguo 02/05/2008, 14:39
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
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>
__________________
Mi punto de partida es Que Bueno Lo Nuevo

Última edición por nicolaspar; 02/05/2008 a las 14:47
  #193 (permalink)  
Antiguo 13/05/2008, 18:37
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 7 meses
Puntos: 18
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.


Espero que a alguien le sea de ayuda.

Última edición por trasgukabi; 23/12/2008 a las 21:02 Razón: Cambio en la URL
  #194 (permalink)  
Antiguo 22/05/2008, 19:45
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
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
 
 
?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo

Última edición por nicolaspar; 28/05/2008 a las 07:20
  #195 (permalink)  
Antiguo 27/05/2008, 20:15
 
Fecha de Ingreso: enero-2008
Mensajes: 132
Antigüedad: 16 años, 3 meses
Puntos: 6
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
__________________
surfiction.org
  #196 (permalink)  
Antiguo 29/07/2008, 16:26
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 8 meses
Puntos: 5
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!
__________________
Andrew :P

Última edición por andrewp; 29/07/2008 a las 16:27 Razón: Olvidé incluír las negritas....
  #197 (permalink)  
Antiguo 18/08/2008, 21:18
 
Fecha de Ingreso: febrero-2007
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
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.
__________________
Angarzafir
Estudiante en Desarrollo Web
Ing. Computación
  #198 (permalink)  
Antiguo 25/08/2008, 05:24
 
Fecha de Ingreso: junio-2004
Mensajes: 621
Antigüedad: 19 años, 10 meses
Puntos: 25
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);
?>
__________________
eContento
- Mis artículos y tutoriales
- Mis jsfiddles

Última edición por jam1138; 25/08/2008 a las 14:13
  #199 (permalink)  
Antiguo 05/09/2008, 15:13
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
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'); 
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #200 (permalink)  
Antiguo 11/09/2008, 11:23
 
Fecha de Ingreso: mayo-2007
Mensajes: 348
Antigüedad: 16 años, 11 meses
Puntos: 9
De acuerdo 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

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

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!

Última edición por GatorV; 11/09/2008 a las 13:11
  #201 (permalink)  
Antiguo 05/10/2008, 16:58
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 9 meses
Puntos: 19
De acuerdo 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 )

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
  #202 (permalink)  
Antiguo 05/10/2008, 18:03
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 9 meses
Puntos: 19
De acuerdo 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

Última edición por korg1988; 18/01/2009 a las 21:56
  #203 (permalink)  
Antiguo 07/10/2008, 22:00
okram
Invitado
 
Mensajes: n/a
Puntos:
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,
  #204 (permalink)  
Antiguo 14/10/2008, 17:18
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
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)

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #205 (permalink)  
Antiguo 20/11/2008, 08:54
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
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!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #206 (permalink)  
Antiguo 03/12/2008, 13:45
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
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. ?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #207 (permalink)  
Antiguo 10/01/2009, 12:50
okram
Invitado
 
Mensajes: n/a
Puntos:
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.

  #208 (permalink)  
Antiguo 24/03/2009, 06:31
Avatar de cvander
Moderador
 
Fecha de Ingreso: abril-2001
Ubicación: Ciudadano del mundo
Mensajes: 13.638
Antigüedad: 23 años
Puntos: 1792
Respuesta: FAQ's de PHP

Cerramos el FAQ para experimentar trabajando futuras consultas desde el Wiki:

http://www.forosdelweb.com/wiki/PHP
__________________
- Christian Van Der Henst
Platzi
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 106 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 22:53.