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. Tema: Enviar correos en HTML y TXT de manera facil. Pregunta: ¿Como envio desde php un correo en formato htmly txt a la vez? Respuesta: ...

  #151 (permalink)  
Antiguo 19/12/2005, 16:37
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 22 años
Puntos: 0
Tema: Enviar correos en HTML y TXT de manera facil.
Pregunta: ¿Como envio desde php un correo en formato htmly txt a la vez?
Respuesta: Con la función mail, pero usando un truquillo para no complicarse la vida escriviendo el código a mano y así poder usar el dreamweaver u otros programas de diseño web.

Primero creamos un documento html que será el que recibiremos por correo, con sus tablas, css, etc... pero allí donde queramos escrivir algo por medio de nuestro escript de forma dinamica nos creamos una variable imaginaria que debería estar entre corchetes, en este ejemplo será nombre {nombre}

mail.html
Código HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
b { 
 font-family: Arial, Helvetica, sans-serif;
 font-size: 11px;
 color: #666666;
 text-align: justify;
 font-weight: bold;
 line-height: 14px }
td {
 font-family: Arial, Helvetica, sans-serif;
 font-size: 11px;
 color: #666666;
 text-align: justify;
 line-height: 14px;
}
.titular { font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 14px;
 font-weight: bolder;
 letter-spacing: 9px;
 word-spacing: 4px;
 color: #FFFFFF;
 text-indent: 6px;
 text-transform: uppercase;
 line-height: 22pxcolor: #FFFFFF
}
-->
</style>
</head>
<body leftmargin="0" bottommargin="0" rightmargin="0" topmargin="0">
<table width="100%" border=0 cellpadding=4 cellspacing=4 bgcolor="#FFFFFF">
  <tr>
    <td bgcolor="#724041" class="titular">SOLICITUD DE INFORMACI&Oacute;N</td>
  </tr>
  <tr>
    <td><table border="0" cellpadding="6" cellspacing="0">
        <tr>
          <td><b><br>
            <br>
            <br>
            Este correo ha sido env&iacute;ado autom&aacute;ticamente</td>
        </tr>
      </table>
      <br>
      <br>
      <table width="100%" border="0" cellpadding="6" cellspacing="0">
        <tr>
          <td><table width="100%" border="1" cellpadding="4" cellspacing="0" bordercolor="#EFE2E2">
              <tr valign="top">
                <td width="25%"><b>Nombre:</b></td>
                <td width="75%">{Nombre}&nbsp;</td>
              </tr>
              </table>
            <br></td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
</html> 
Bueno, lo he retocado un poco a saco, pero se podrían poner mas campos o lo que se quisiera como se quisiera.

Luego podríamos tener un documento de texto con las mismas caracteristcicas para poder enviar el correo en ambos formatos, y de este modo el navegador mostrará el mas adecuado en función de la aplicación de correo que estemos usando.

mail.txt
Código:
SOLICITUD DE INFORMACIÓN
 
  Este correo se ha enviado automáticamente.
 
  - Nombre: {nombre}
Luego el código en un script a parte que llama a los dos archivos y remplaza las cadenas entre corchetes, como sigue. Sería digamos donde estaría la acción del script.

Código PHP:
/* * * * * * * * * * SCRIPT PHP (Envio de correo electrónico) * * * * * * */
 
$correo_destinatario "[email protected]"//La dirección que recibirá el correo
$correo_nombre "MI NOMBRE";        //El nombre de la persona del correo
$motivo_empresa "Solicitud de información"//El conocido Subject o Motivo
 
/* * * * * * * * * * FUNCIONES  PHP * * * * * * * * * * * * * * * * * * * */
 
//Esta función es la encargada de reemplazar las variables que nos hemos creado
//  entre corchetes por las recibidas por el fomulario, toma como parametro la
//  ruta del archivo y retorna todo el texto con las variables cambiadas.
function prepara_formato($archivo){
 global 
$Nombre,$_SERVER,$PHP_SELF;
 
$fp=fopen($archivo,"r");
 
$contenido=fread($fp,filesize($archivo)); 
 
fclose($fp);
 
$contenido eregi_replace("{Nombre}",$Nombre,$contenido);
 
// aquí añadiriamos los demás campos, por ejemplo el apellido:
 //$contenido = eregi_replace("{Apellido}",$Apellido,$contenido);
 
return $contenido;
}
 
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
$boundary md5(time().rand(1,100));
$priorities = array(1=>'1 (Highest)''2 (High)''3 (Normal)''4 (Low)''5 (Lowest)' );
$priority $priorities[3];
$headers "From: $correo_nombre <$correo_destinatario>\r\n";
$headers .= "Return-Path: $correo_destinatario\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "X-Mailer:PHP 5.1\r\n";
$headers .= "X-Priority: $priority\r\n";
//$headers .= "Content-Type: multipart/mixed;";
$headers .= "Content-Type: multipart/alternative; ";
$headers .= "boundary = $boundary\r\n\r\n";
 
if (
$Envia!=""){    // El botón del formulario se llama Envia
 
$Nombre trim(ucwords($Nombre)); //Nombre es un campo de este formulario
 
 // text e-mail
 
$archivo="mail.txt";
 
$contenido=prepara_formato($archivo);
 
$cuerpo_1 "--$boundary\r\n" .
  
"Content-Type: text/plain; charset=ISO-8859-1\r\n" .
  
"Content-Transfer-Encoding: base64\r\n\r\n";
 
$cuerpo_1 .= chunk_split(base64_encode($contenido));
 
 
// html e-mail
 
$archivo="mail.htm";
 
$contenido=prepara_formato($archivo);
 
$cuerpo_1 .= "--$boundary\r\n" .
  
"Content-Type: text/html; charset=ISO-8859-1\r\n" .
  
"Content-Transfer-Encoding: base64\r\n\r\n";
 
$cuerpo_1 .= chunk_split(base64_encode($contenido));
 
  
mail($correo_destinatario,$motivo_empresa,$cuerpo_1,$headers);


  #152 (permalink)  
Antiguo 10/01/2006, 18:41
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 11 meses
Puntos: 0
Tema: Comentarios
Pregunta: Para qué poner comentarios?
Respuesta:
http://www.manualphp.es/articulo-hac...os-en-php.html
  #153 (permalink)  
Antiguo 18/01/2006, 04:14
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 21 años, 1 mes
Puntos: 4
Ordenacion Directa

Pregunta: ¿Como ordenar un array por el método de ordenacion directa?
Respuesta: Aqui os pongo las funciones comentadas. Es la ordenacion de un array de numeros, para ordenar objetos a traves de sus atributos seria cambiar 4 cosas.
Código PHP:
<?php
$array
=array(3,45,8,2,5,6,20,9,100,70);
print_r($array);
ordenarInsercionDirecta($array);
echo 
'<br>';
print_r($array);
//FUNCIONES DE ORDENACION DIRECTA
/**
  * Buscar dónde debería estar cierto número si lo insertáramos en la parte ordenada.
  * Es una simple búsqueda secuencial en secuencia ordenada. Si el elemento que
  * vamos a insertar es mayor que todos los de la parte ordenada, el método devuelve
  * -1 (es decir, que "no debería estar ahi"; en este caso, es tanto como decir que
  * no hace falta moverlo).
  * @param $array El array a modificar. Recibe una referencia
  * @param $tamano Número de elementos del array (empezando por la izquierda) que forman parte del trozo ya ordenado.
  * @param $numero Número para el que se pretende encontrar sitio dentro del trozo mencionado.
  * @return La posición que debería ocupar "número" dentro de ese trozo; es -1 si "numero" ya es más grande que todos los elementos del trozo.
  */
function buscarPosicion(& $array$tamano$numero) {
    
$posicion = -1;
    for (
$i 0$i $tamano$i ++)
        if (
$posicion == -1)
            if (
$array[$i] > $numero)
                
$posicion $i;
    return 
$posicion;
}

/**
 * Mover una serie de elementos una posición a la derecha.
 * @param $array El array a modificar. Recibe una referencia
 * @param desde Posición del primer elemento que debe verse afectado por el desplazamiento.
 * @param hasta Posición del último elemento que debe verse afectado por el desplazamiento.
 */
function moverHaciaLaDerecha(& $array$desde$hasta) {
    
// Ya sabemos que no podemos empezar a mover en "desde" (eso sería "empujar" los elementos)
    // sino que tenemos que empezar por el lado "hasta" con un bucle descendente ("tirar" de los elementos)
    
for ($i $hasta$i $desde$i --)
        
$array[$i] = $array[$i -1];
}

/**
 * Ordena el array por el metodo de inserción directa.
 * @param $array El array a modificar. Recibe una referencia
 */
function ordenarInsercionDirecta(& $array) {
    
$i 0;
    
$posicion 0;
    
$numero 0;

    
// Para cada elemento del array, buscaremos su posición adecuada; este bucle es el que recorre
    // dichos elementos.
    // Nótese que no empieza en 0, porque el primer elemento es, de por si, un "sub-array ordenado". Podríamos
    // empezar en 0, pero no tendría ningún efecto; empezamos a buscarle sitio al segundo
    // elemento (índice 1).
    
for ($i 1$i count($array); $i ++) {
        
$numero $array[$i];
        
//mensaje("Colocar el elemento de posición " + i + " (es un " + numero + ")");
        
$posicion buscarPosicion($array$i$numero);
        
//if (posicion == -1) mensaje("(Ya esta en su sitio)"); else mensaje("Su posición adecuada es la de índice " + posicion);
        // Si la posición es -1, es que el elemento ya está en su sitio y no
        // hace falta insertarlo en el "sub-array ordenado".
        
if ($posicion != -1) {
            
//mensaje("Desplazamos los elementos entre los índices " + posicion + " y " + (i-1) + " (inclusive) una posición a la derecha");
            // Movemos a la derecha los elementos que hay entre la posición de destino
            // y el final de la parte ordenada (inclusive), para hacerle un hueco libre
            // al elemento que pretendemos poner en la posición de destino
            
moverHaciaLaDerecha($array,$posicion$i);
            
//mensaje("Y ponemos en su sitio el " + numero);
            // Hecho el hueco, ponemos en él el número en cuestión
            
$array[$posicion] = $numero;
        }
        
//mensaje("Y ahora la matriz queda (la zona ya ordenada se subraya):\n" + toString());
        //mensaje(subrayar(i));
    
}

}
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #154 (permalink)  
Antiguo 25/01/2006, 18:32
 
Fecha de Ingreso: octubre-2004
Mensajes: 143
Antigüedad: 20 años
Puntos: 0
Tamaño de Archivo en Formato Humano

Pregunta: Como obtener el tamaño de un archivo en formato entendible para el ser humano común y silvestre, como 150KB, 250MB ,etc ???
Respuesta Con el siguiente método

Código PHP:
<?php
function tamano_humano($size $precision )
{
   if(
$size == 0)
   {
       return 
"0 Bytes";
   }
   
   
$filesizename = array(" Bytes"" KB"" MB"" GB"" TB"" PB"" EB"" ZB"" YB");
   return 
round($size/pow(1024, ($i floor(log($size1024)))), $precision ) . $filesizename[$i];
}
?>
Este método lo obtuve de php.net, pero le agregue el argumento de precisión... vamos que algo tenia que hacerle

Espero que les sirva..

Saludos

Última edición por jotamachuca; 25/01/2006 a las 18:44 Razón: Me equivoque en una variable :borracho:
  #155 (permalink)  
Antiguo 14/02/2006, 03:32
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Tema: Manejo de mensajes de error.
Pregunta: ¿Para qué sirve anteponer el arroba (@) a una sentencia?
Respuesta: Evita se muestre el mensaje de error si lo hay.

Es tema recurrente que, viendo scripts ajenos, se encuentre con un arroba antes de una función y no se sepa el motivo. Pués como respondí arriba, la función de esto es evitar que se muestre el mensaje de error devuelto por PHP en caso que lo hubiese.

Probemos creando un archivo con una sentencia erronea:
Código PHP:
<?php
mysql_connect
(); // faltan parámetros
echo "Esto es una prueba";
?>
Esto mostraria algo como:
Cita:
Warning: mysql_connect(): Acceso negado para usuario: 'ODBC'@'localhost' (Usando clave: NO) in ruta/del/archivo.php on line 2
Esto es una prueba
En efecto hay un error, faltan los parámetros para establecer la conexión.

Ahora veamos el mismo ejemplo pero con la arroba antepuesta a la función que proboca el error:
Código PHP:
<?php
@mysql_connect(); // faltan parámetros
echo "Esto es una prueba";
?>
Nos debería mostrar solo el texto correspondiente a "Esto es una prueba". El error persiste, solo evitamos el mensaje. La utilidad de esto es evitar estos mensajes en una aplicación terminada; no deben interezarle al usuario final, puede confundirlo.

Cabe decir (al margen de esta FAQ) que hay maneras de controlar de manera "global" los mensajes de error que han de ser mostrados, vease el uso de la función error_reporting().
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #156 (permalink)  
Antiguo 27/02/2006, 00:11
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 11 meses
Puntos: 19
TEMA: Uso de las funciones mktime() y date()
PREGUNTA: ¿ Como puedo hacer un calendario ?
RESPUESTA: Con las funciones mktime() y date() alcanza!!!


La mayoría del script funciona en base a la funcione mktime()

Código PHP:
<table>
<?php
include("funciones.php");
$mess $_GET['mess'];
$anio $_GET['anio'];
if(
$mess == "" || $anio == ""){
    
$anio date("Y");
    
$mess date("n");
}
    
$ultimo date("t",mktime(000$mess1$anio));
    if(
$mess == '12' || $mess == '1'){
        if(
$mess == '12'){
            
$next 1;
            
$prev $mess -1;
            
$anion $anio 1;
            
$aniop $anio;
        }
        if(
$mess == '1'){
            
$next $mess 1;
            
$prev 12;
            
$anion $anio;
            
$aniop $anio -1;        
        }
    }else{
        
$next $mess 1;
        
$prev $mess 1;    
        
$aniop $anio;
        
$anion $anio;
    }
    echo 
"<tr><th colspan=7>$anioo</th></tr><tr>";
echo 
"<tr><td><a href='calendario.php?mess=$prev&anio=$aniop'><<</a></td><th colspan=5>$mes[$mess] $mess</th><td><a href='calendario.php?mess=$next&anio=$anion'>>></td></tr><tr>";
echo 
"<tr><td>D</td><td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td>S</td></tr>";
    
$diaa "1";
    while(
$diaa <= $ultimo){
        
$dia date("D",mktime(0,0,0,$mess,$diaa,$anio)); # retorna el dia de la semana en letras...
        
$fecha date("d",mktime(0,0,0,$mess,$diaa,$anio)); #retorna el dia del mes en 01/31
        
$dia_semana date("w",mktime(0,0,0,$mess,$diaa,$anio)); #retorna el dia de la semana en numero

        
if($dia == "Sun"){
            echo 
"</tr><tr>";
        }
        if(
$fecha == "01"){
            
$i=0;
            while(
$i != $dia_semana){
                echo 
"<td>&nbsp;</td>";
                
$i++;
            }
        }
        echo 
"<td>$fecha</td>";
        
$diaa++;
    }
    echo 
"</tr>";
?>
</table>
Primero verifico las variables $mess y $anio para saber que mes te tengo que mostrar por ejemplo si venis de febrero la variable mess tiene que tener el valor 1 porque al momento de imprimir el link de "Mes anterior" le puse 1 a la variable mess, y lo mismo con el año...en el caso de que quieras ver marzo las variables $mess vale 3 y asi ..
Código PHP:
<?
$mess 
$_GET['mess'];
$anio $_GET['anio'];
if(
$mess == "" || $anio == ""){
    
$anio date("Y");
    
$mess date("n");
}
?>
Luego verifico la cantidad de días que tiene el mes a mostrar por ejemplo enero tiene 31 días, por lo tanto la variable $ultimo es igual a 31.
Código PHP:
<?
$ultimo 
date("t",mktime(000$mess1$anio));
?>
Creo una réplica de la variable año, para despues hacer un control ... y en algunos casos cambiar el año
Código PHP:
<?
$ultimo 
date("t",mktime(000$mess1$anio));
    
$anioo $anio;
    if(
$mess == '12' || $mess == '1'){
        if(
$mess == '12'){
            
$next 1;
            
$prev $mess -1;
            
$anion $anio 1;
            
$aniop $anio;
        }
        if(
$mess == '1'){
            
$next $mess 1;
            
$prev 12;
            
$anion $anio;
            
$aniop $anio -1;        
        }
    }else{
        
$next $mess 1;
        
$prev $mess 1;    
        
$aniop $anio;
        
$anion $anio;
    } 
?>
En este caso uso dos variables ... $aniop que hace referncia al año previo y $anion al proximo (next) esto me sirve para mostrar las flechitas << >> que serviria para moverse por los meses... dependiendo de cual sea el caso incremento o decremento
luego imprimo...
Código PHP:
<?
    
echo "<tr><th colspan=7>$anioo</th></tr><tr>";
echo 
"<tr><td><a href='calendario.php?mess=$prev&anio=$aniop'><<</a></td><th colspan=5>$mes[$mess] $mess</th><td><a href='calendario.php?mess=$next&anio=$anion'>>></td></tr><tr>";
echo 
"<tr><td>D</td><td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td>S</td></tr>"
?>
Defino la variable $diaa que es para controlar el bucle que imprimirá
los días del mes
Código PHP:
<?
    $diaa 
"1";
    while(
$diaa <= $ultimo){
?>
dentro del while ... uso la funcion mktime() para que me devuelva el dia que en función a la variable $diaa

el mktime combinado con la función date() devuelve el dia de la semana sun mon thu wen .. una cosa asi ... es para saber mas en que casillero ponerlo ...
Código PHP:
<?
$dia 
date("D",mktime(0,0,0,$mess,$diaa,$anio));
?>
Lo mismo hago con esta línea a diferencia que obtengo el día en numeros .. por ejemplo 01 02 03 04 05 06 etc ...
Código PHP:
<?
$fecha 
date("d",mktime(0,0,0,$mess,$diaa,$anio));
?>
En $dia_semana alamceno el numero de día de la semana .. el día 1 2 o 3 así hasta siete .. esto me sirve para el caso de cuando el día 1 de febrero empieza el dia miercoles, entonces esto me sirve para saber en que casillero escribo la fecha ...
Código PHP:
<?PHP
$dia_semana 
date("w",mktime(0,0,0,$mess,$diaa,$anio));
?>
Despues chequeo estas cosas...
Código PHP:
<?php
        
if($dia == "Sun"){
            echo 
"</tr><tr>";
        } 
?>
Si el día es igual domingo cierro la fila y abro una nueva ..
dado de que el calendario lo imprimo asi ..

L M M J V S D

Despues pregunto si el día es primero, para saber cuantos casilleros me tengo que mover a la derecha .. acá es donde uso la variable $dia_semana
Código PHP:
<?
        
if($fecha == "01"){
            
$i=0;
            while(
$i != $dia_semana){
                echo 
"<td>&nbsp;</td>";
                
$i++;
            }
        }
?>
imprimo la variable $fecha e incremento la variable diaa que es la que controla el bucle ...

Código PHP:
<?
        
echo "<td>$fecha</td>";
        
$diaa++; 
?>
Espero haberme explicado bien ... cualquier duda .. ya saben ...

Recuerden que todo es en base a las funciones mktime y date
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!

Última edición por turco_7; 24/04/2006 a las 12:30
  #157 (permalink)  
Antiguo 10/03/2006, 17:05
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 11 meses
Puntos: 0
Tema: Web en varios idiomas.
Pregunta: ¿Cómo puedo hacer una web en varios idiomas mediante arrays?
Respuesta:

Antes que nada tienes que checar la configuración del usuario:
Código PHP:
<?php 

if (isset ($_GET['lang']))
{
    
$idioma $_GET['lang'];
}
elseif (
preg_match("/^es/"$_SERVER['HTTP_ACCEPT_LANGUAGE'])) 
{
$idioma "es";
}
else 
{
$idioma "en";
}
?>
Ahora, creas los arrays:
Código PHP:
<?php

$idiomas 
= array( 
    
'en' => array(
        
'idioma' => 'English',
        
'otro_idioma' => 'es',
        
'buscar' => 'Search',
        
'portada' => 'Home'//Menú
        
'foros' => 'Forums',
        
'boletin' => 'Newsletter',
        
'enlazame' => 'Link Me',
        
'acerca' => 'About',
        
'contacto' => 'Contact',
        
'faq' => 'Faq',
        
'noticias' => 'News'//Contenido
        
'copyright' => 'All Rights reserved'//Copyright

    
),
    
'es' => array(
        
'idioma' => 'Espa&ntilde;ol'
        
'otro_idioma' => 'en',
        
'buscar' => 'Buscar',
        
'portada' => 'Portada'//Menú
        
'foros' => 'Foros',
        
'boletin' => 'Boletín',
        
'contacto' => 'Contacto',
        
'faq' => 'FAQ',
        
'noticias' => 'Noticias',
        
'copyright' => 'Todos los derechos reservados' //Copyright
    
),
);
?>
Para cambiar de idioma mediante un link pones:
Código PHP:
<a href="index.php?lang=<?php echo $idiomas['en']['otro_idioma']; ?>">Espa&ntilde;ol</a> 
<a href="index.php?lang=<?php echo $idiomas['es']['otro_idioma']; ?>">English</a>
Y en los links:
Código PHP:
<a href="index.php" title="<?php echo $idiomas[$idioma]['portada'];?>">+ <?php echo $idiomas[$idioma]['portada'];?></a>
[Eliminen los tags y junten todo el código]

Me basé en el WAMP porque no se mucho de PHP.

  #158 (permalink)  
Antiguo 29/03/2006, 08:05
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 8 meses
Puntos: 3
textos en diferentes fuentes

es un truco para poder presentar textos con fuentes diferentes a las tradicionales en la pagina web sin complicaciones mayores.

los requisitos para hacer posible este truco son disponder de un hosting con PHP y tener ciertas nociones de este lenguage.

pasos a seguir:

1. selecciona del panel de control la fuente que mas te guste (Panel de Control >> Fuentes) y arrastrala hasta el escritorio. es la manera mas facil de copiar la fuente. dale un nombre significativo, por ejemplo "fuente.ttf".

2. sube la fuente a la carpeta donde guardas las imagenes en el servidor.

3. sube tambien este archivo en PHP en la misma carpeta donde guardas las imagenes. llamale "text.jpg.php":
Código:
<?php
header("Content-type: image/jpeg");

// constants
define("FONT_SIZE", "24");
define("FONT_FAMILY", "fuente.ttf");

// parameters
$text = isset($_REQUEST["text"])? $_REQUEST["text"]: "???";

// image dimensions
$box = imagettfbbox(FONT_SIZE, 0, "zecbt.ttf", $text);
$width = FONT_SIZE + 4;
$height = $box[2] - $box[0] + 10;

// new image
$img = @imagecreate($height, $width);
imagecolorallocate($img, 0xff, 0xff, 0xff);  // white

// text
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);  // black
imagettftext($img, FONT_SIZE, 0, 0, $width - 6, $black, FONT_FAMILY, $text);

imagejpeg($img);
imagedestroy($img);
?>
4. sube a tu servidor una pagina que contenga la siguiente linea. llamale "prueba.php":
Código:
<img src="images/text.jpg.php?text=<?=urlencode("Este texto tiene una fuente diferente a la usual")?>"  />
"urlencode" se utiliza para formatear el texto antes de pasarlo como parametro. en este caso la frase "Este texto tiene una fuente diferente a la usual" la convertiria a "Este+texto+tiene+una+fuente+diferente+a+la+us ual"

al abrir la pagina puedes ver una imagen que muestra el texto en la fuente seleccionada.

parece un poco complicado, pero luego puedes reutilizar el script "text.jpg.php" en muchos sitios de tu pagina.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #159 (permalink)  
Antiguo 11/04/2006, 15:14
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
Puntos: 2
Mensaje Pasar variables entre paginas de forma segura (codificadas)

Pregunta:

Una de mis paginas carga su contenido de acuerdo a un GET / POST enviado por una página anterior.

¿Como puedo crear este proceso de forma segura?


Respuesta:

Muy facil Señor! Aqui le dejo dos funciones que van a hacer el trabajo por usted:

FUNCION 1: "Para codificar antes de enviar".

Código PHP:
function encode_this($string) {
    
$control "extra";
    
$tmp_string $string;
    
$string $control.$tmp_string.$control;

    
$string base64_encode($string);

    return(
$string);

ok... encode_this() recibe el string a codificar, puede ser un numero, claro.

Al string le agregara un codigo de control DELANTE y DETRAS, para reforzar un poco el tema.

Luego codifica TODO el string generado con Base64, y queda un chorizo de caracteres dificilmente identificable... algo asi como una abominación informática


FUNCION 2: "Para decodificar al recibir".

Código PHP:
function decode_this($string) {
    
$string base64_decode($string);
    
$control "extra";
    
$string str_replace($control"""$string");

    return 
$string;

Esta ultima funcion, lo que hace es:
1. Decofica en base64 el string entero (la abominación).
2. 'corta' del string el string de control que habia DELANTE y DETRAS.
3. Retorna el valor verdadero que se intentaba enviar.


¿COMO SE USA?

Pagina 1 (indice.php)

Código PHP:
/* $id puede ser un dato que tomamos de la base, o una lista generada, etc*/
$id encode_this($id);
echo 
"<a href='/abrir_pagina.php?id_secreto=".$id."'>Cargar pagina 234</a>"
Pagina 2 (/abrir_pagina.php)

Código PHP:

// $fecha_de_tu_cumpleaños es la clave, tomada de algun otro lado.

if ($_GET['id_secreto]) {

    if ( ($id = decode_this(['
id_secreto])) != $fecha_de_tu_cumplea&#241;os) {
               
echo "Pleas wait...<br>";
               exit();
        } else {
                
header("location: www.pentagono.gov/archivosecreto_de_ovnis.php?id=".$id);
        }
} else {
    echo 
"¿A donde crees que vas sin tu ID super secreto?<br>";
    exit();

Bueno esto es bastante básico, pero sirve como punto de partida. Hay muchos otros elementos que se podrian controlar, e incluso el "string de control" deberia ser distinto dependiendo el caso y lo que se quiera "mover" entre páginas...

SALUDOS!

eDU

Última edición por Computer XTress; 14/04/2006 a las 03:10
  #160 (permalink)  
Antiguo 15/04/2006, 13:31
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 19 años, 4 meses
Puntos: 2
Tema: Descargas.

Pregunta: ¿Como puedo contar la cantidad de veces que se descargo un archivo?

Respuesta:

El tema mas que nada pasa en como contamos. Para poder realizarlo hay que forzar la descarga por medio de cabeceras. No nos interesa contar cuantas veces se ha empezado a descargar un archivo, si no cuantas veces se descargo. Algunos script cuantan la cantidad de veces que empezo, ¿ Pero que sucede si empezamos y por alguna razón abortamos la descarga? Esto es lo que queremos solucionar.

El thread donde se realizo es este. El codigo basicamente es el siguiente.

Código PHP:
// Si tenemos usuarios registrados aqui deberia ir el codigo para identificarlo.
// Y si no tenemos usuarios registrados aqui pueden hacer cualquier cosa que necesiten.

header"Content-Type: application/octet-stream");
header"Content-Length: ".filesize($ElFichero));
header"Content-Disposition: attachment; filename=".$TheFile."");
readfile($ElFichero);

//El punto clave de todo esto es la siguiente instrucción
//Aqui es donde tenemos que sumar uno al contador para que se actualice
//esta porcion de codigo solo se ejecutara si el archivo fue descargado con exito, no si se aborta o demas.
algunaDB_query("A descargado el archivo!!!"); 
Espero que les guste, y cualquier comentario correccion o cualquier duda sobre esta FAQ, pueden enviarme un PM.

Saludos.
  #161 (permalink)  
Antiguo 19/04/2006, 23:32
Avatar de atak  
Fecha de Ingreso: julio-2005
Ubicación: Huancayo
Mensajes: 490
Antigüedad: 19 años, 3 meses
Puntos: 5
De acuerdo Variables de Sesion

Tema : Variables de SESSION

Pregunta : Desarrollar un Script para Hallar el mayor y menor promedio de 05 notas asimismo el nombre del Alumno.

Respuesta :
En esta Oportunidad usaremos variables de Session eee aqui el codigo amigos.

Copyright Atak


1.- Archivo main.html ( formulario de ingreso de datos )

Código PHP:


<HTML>
<
HEAD>
<
TITLE>Promedios</TITLE>
</
HEAD>
<
BODY>
<
FORM METHOD=POST ACTION="calcula.php">
Nombre <INPUT TYPE="text" NAME="nombre">
<
br>
Sexo <INPUT TYPE="text" NAME="sexo">
<
br>
Direccion: <INPUT TYPE="text" NAME="direccion">
<
br>
Nota Esp.: <INPUT TYPE="text" NAME="notae">
<
br>
Nota Ingl.: <INPUT TYPE="text" NAME="notai">
<
br>
Nota Prog: <INPUT TYPE="text" NAME="notap">
<
br>
<
INPUT TYPE="submit" value="Enviar">
</
FORM>
<
br>
<
A HREF="elimina.php">Eliminar variables de SESSION</A>
</
BODY>
</
HTML


2.- Archivo calcula.php ( Archivo que haremos los respectivos calculos )

Código PHP:

<?php
session_start
();
/// valores Recibidos
$nombre=$_POST['nombre'];
$nota1=$_POST['notae'];
$nota2=$_POST['notai'];
$nota3=$_POST['notap'];
$promedio=($nota1+$nota2+$nota3)/3;
/// NOtas de  0 a 20
if (!isset($_SESSION['nombre']))
{
    
$_SESSION['mayor']=0;
    
$_SESSION['menor']=20;
    
$_SESSION['nommax']="";
    
$_SESSION['nommin']="";
    
$_SESSION['nombre']=$nombre;
    
$_SESSION['cuenta']=1;    
            
    if (
$promedio>$_SESSION['mayor'])
    {
        
$_SESSION['mayor']=$promedio;
        
$_SESSION['nommax']=$nombre;
    }
    if(
$promedio<$_SESSION['menor'])
    {
        
$_SESSION['menor']=$promedio;
        
$_SESSION['nommin']=$nombre;
    }
    
header("Location: main.html");
    
}
else
{
if (
$_SESSION['cuenta']==5)
    {
        
// Resultados
        
echo "Maxima Nota <BR>";
        echo 
"Alumno : ".$_SESSION['nommax']."<BR>";
        echo 
"Nota : ".$_SESSION['mayor']."<br>";

        
///
        
echo "Minima Nota <BR>";
        echo 
"Alumno : ".$_SESSION['nommin']."<BR>";
        echo 
"Nota : ".$_SESSION['menor']."<br>";
    }
else
    {
        
// Registra
    
$_SESSION['cuenta']=$_SESSION['cuenta']+1;
    if (
$promedio>$_SESSION['mayor'])
    {
        
$_SESSION['mayor']=$promedio;
        
$_SESSION['nommax']=$nombre;
    }
    if(
$promedio<$_SESSION['menor'])
    {
        
$_SESSION['menor']=$promedio;
        
$_SESSION['nommin']=$nombre;
    }    

    
header("Location: main.html");

    }
}
?>

3.- Archivo elimina.php ( elimina las variables de SESSION)

Código PHP:

<?php
    session_start
();
    if (!isset(
$_SESSION['nombre']))
    {
    
session_unset();
    
session_destroy();    
    }
header("Location: main.html")
?>

Salu2

__________________
. .: El mejor Inicio :. .
  #162 (permalink)  
Antiguo 31/05/2006, 02:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 10 meses
Puntos: 2
problemas al forzar descargas / redireccionar (perdida de valores de $_SESSION[])

Tema: Headers / Descargas forzadas

Pregunta: CASO1: Cuando uso un header() para redireccionar, no se guardan los cambios en las variables de session.
CASO2: Mi script de control de desarcagas funciona pero no permite navegar el sitio hasta que el download finaliza

Respuesta:
Para el CASO 1 lo primero es asegurarse que el SID (Identificador Unico de Session) se esté propagando por cookies y no por URL, ya que si este se está propagando por cookies y a su vez el browser no está siendo capaz de aceptar las cookies, esta puede ser la causa de la pérdida de valores de session. (Tener a bien realizar este control antes de utilizar la información a continuación)

En ambos casos la solucion es utilizar el comando session_write_close(); que forzara el guardado de los cambios en session (variables) y cerrará la sesion sin destruirla (es decir, cuando vuelvo a hacer un session_start() la misma session sigue en pie).

Este problema sucede ya que PHP guarda los cambios en las variables de session cuando el
script finaliza, y dado que un header() no significa el fin del script (sino un comando más), es necesario "forzar" el guardado y cierre de sesion.

Recordar que siempre se debe respetar el orden de los comandos de sesion, por ejemplo:

Código PHP:
session_start();

// Trabajamos con las variables de session
$_SESSION['contador']++;
$_SESSION['time'] = time();

(...)

// Antes de redireccionar, guardamos la session

session_write_close();
//redireccionamos
header("Location: /nueva_pagina.php"); 
Para el caso 2 haremos exactamente lo mismo. Colocaremos un "session_write_close()" antes de llamar a la función header(); (que para este caso, nos estará redireccionando al archivo a descargarse).

Espero sirva, más info en ar2.php.net buscar término: header()

[Edit: Gracias cluster por tu atención]

Última edición por Computer XTress; 05/06/2006 a las 20:38
  #163 (permalink)  
Antiguo 09/06/2006, 21:44
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 21 años
Puntos: 2
Tema: Listar archivos de directorios+subdirectorios
Prólogo: Ya era hora de devolver un poquito de todo lo que este foro me ha dado

Pregunta: ¿Cómo puedo listar el contenido de una carpeta en mi webserver para la gente pueda descargar archivos, dado que el browser del apache trunca nombres largos y es feo?

Respuesta: Creá un index.php, con el siguiente contenido, y pongo en el directorio que desees (este script permite entrar en los subdirectorios pero no ir más atrás del directorio 'root')

Código PHP:
<?
header
("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Explorando /<? echo $_GET['ruta']; ?></title>
</head>
<body>
<pre>
<?
if (empty($_GET['ruta']) || ereg("^\."$_GET['ruta'])) {
    
$dir './';
}
else {
    
$dir $_GET['ruta'];
}
if (
is_dir($dir)) {
    
    function 
tamano($bytes) {
        
$largo strlen($bytes);
        if (
$largo 4) {
            
$divisor 1;
            
$unidad 'B';
        }
        else if (
$largo && $largo 7) {
            
$divisor 1024;
            
$unidad 'KB';
        }
        else if (
$largo && $largo 10) {
            
$divisor pow(10242);
            
$unidad 'MB';
        }
        else if (
$largo && $largo 12) {
            
$divisor pow(10243);
            
$unidad 'GB';
        }
        else {
            
$divisor pow(10244);
            
$unidad 'TB';
        }
        
$salida[0] = round(($bytes $divisor), 2);
        
$salida[1] = $unidad;
        return 
$salida;
    }

    
$gd opendir($dir);
    if (
$gd) {
        
$rn "\r\n";
        while ((
$archivo readdir($gd)) !== false) {
            if (
ereg("^(.)*\.[a-zA-Z0-9]{1,3}$"$archivo)) {
                if (
$archivo == 'index.php') { break; }
                
$extension strtolower(substr($archivo, -3));
                switch (
$extension) {
                    case 
'mp3':
                    case 
'wma':
                        
$icono 'snd';
                        break;
                    case 
'jpg';
                    case 
'tif';
                    case 
'png';
                        
$icono 'pic';
                        break;                    
                    default:
                        
$icono 'unk';
                        break;
                }
                
                
$iconos [] = $icono;
                
$archivos[] = $archivo;
                
$fechas[] = $fecha;
                
$tamanos[] = tamano(filesize($dir.$archivo));
            }
            else if (
$archivo != '.' && $archivo != '..') {
                
$carpetas[] = $archivo;
            }
        }
        
closedir($gd);
        
        if (
$dir != '.') {
            
$ruta explode('/'$_GET['ruta']);
            
$tot_subdir count($ruta) - 2;
            
krsort($ruta);
            
$volver '<img src="bck.png"> <a href="?ruta=';
            for (
$i 0$i $tot_subdir$i++) {
                
$volver .= $ruta[$i].'/';
            }
            
$volver .= '">volver</a>'.$rn;
            echo 
$volver;
        }
        
        if (
is_array($carpetas)) {
            
natcasesort($carpetas);
            foreach (
$carpetas as $valor) {
                echo 
'<img src="fol.png"> <a href="?ruta='.$_GET['ruta'].urlencode($valor).'/">'.$valor.'</a>    '.$rn;
            }
        }
        
        if (
is_array($archivos)) {
            if (
natcasesort($archivos)) {
                foreach (
$archivos as $clave => $valor) {
                    echo 
'<img src="'.$iconos[$clave].'.png"> <a href="'.$dir.urlencode($valor).'">'.$valor.'</a>    ';
                    
printf("%6.2f "$tamanos[$clave][0]);
                    echo 
$tamanos[$clave][1];
                    echo 
$rn;
                }
            }
        }
    }
}
else {
    echo 
'El directorio \''.$dir.'\' no es v&aacute;lido.'
}
?>
</pre>
Espero que les sea de utilidad
  #164 (permalink)  
Antiguo 09/06/2006, 21:56
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 21 años
Puntos: 2
Tema: Generar menús desplegables HTML

Pregunta: ¿Cómo puedo generar <option>s de forma fácil y cómoda?

Respuesta: Estas funciones son la solución!

Generando desde MySQL: a esta función se le pasa una consulta SQL que traiga el ID y el String de los items guardados en la base.
El segundo parámetro es opcional, el cual recibe un ID y si es igual a alguno de los que trae la consulta, imprime la propiedad 'selected' del tag <option>
Código PHP:
<?
function listar_items($sql$marcar 0) {
    if (
$marcar 0) {
        
$result mysql_query($sql);
        while (
$row mysql_fetch_row($result)) {
            
?>
            <option value="<? echo $row[0]; ?>"<? if ($row[0] == $marcar) { echo ' selected'; } ?>><? echo $row[1]; ?></option>
            <?
        
}
    }
    else {
        
$result mysql_query($sql);
        while (
$row mysql_fetch_row($result)) {
            
?>
            <option value="<? echo $row[0]; ?>"><? echo $row[1]; ?></option>
            <?
        
}
    }
}
?>
Generando desde Directorio: a esta función se le pasa una ruta en donde haya archivos a listar.
El segundo parámetro es opcional, el cual recibe un nombre de archivo y si es igual a alguno de los que está en el directorio, imprime la propiedad 'selected' del tag.
Como yapa, los archivos son listados por orden natural <option>[/I]
Código PHP:
<?
function listar_archivos($ruta$marcar x) {
    if (
is_dir($ruta)) {
        if (
$gd opendir($ruta)) {
            while ((
$archivo readdir($gd)) !== false) {
                if (
$archivo != '.' && $archivo != '..') {
                    
$archivos[] = $archivo;
                }
            }
            
closedir($gd);            
            if (
natcasesort($archivos)) {
                if (
$marcar != 'x') {
                    foreach (
$archivos as $archivo) {
                        if (
$archivo == $marcar) {
                            echo 
'<option value="'.$archivo.'" selected>'.$archivo.'</option>';
                        }
                        else {
                            echo 
'<option value="'.$archivo.'">'.$archivo.'</option>';
                        }
                    }
                }
                else {
                    foreach (
$archivos as $archivo) {
                        echo 
'<option value="'.$archivo.'">'.$archivo.'</option>';
                    }
                }
            }
        }
    }
}
?>
Ejemplos:
Código PHP:
bla bla bla
<select name="usuario">
<? listar_items('select idusuario, usuario from usuarios'1); ?>
</select>
bla bla bla
<select name="foto">
<? listar_archivos('archivos/fotos/''sin_imagen.png'); ?>
</select>
bla bla bla
espero que les guste
  #165 (permalink)  
Antiguo 25/07/2006, 13:06
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 18 años, 3 meses
Puntos: 5
Información

Tema: Funciones
Pregunta: ¿Como puedo obtener el dígito verificador de un RUT? (Chile)
Respuesta:

navegando por internet encontre una funcion pequeña y sencilla

Enviado por Luis Dujovne

Código PHP:
<?php
function dv($r){$s=1;for($m=0;$r!=0;$r/=10)$s=($s+$r%10*(9-$m++%6))%11;
return 
chr($s?$s+47:75);}
?>

Última edición por jam1138; 26/07/2006 a las 05:43
  #166 (permalink)  
Antiguo 08/08/2006, 13:25
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 2 meses
Puntos: 0
Pregunta: Crear funciones con muchos parametros...
Respuesta: ...

Por ejemplo, yo tengo esta función...
Código PHP:
echo sumar(157810545); // devolver la suma de todos... 
¿Cómo puedo hacer esto?

Muy simple...
Código PHP:
function sumar()
{
   
$numeros func_get_args();
   
$total 0;
   foreach (
$numeros as $key)
   {
       
$total += $key;
   }
   return 
$total;

La función func_get_args devuelve un array con todos los parametros que se le pasaron a la función...
¿Cómo uso esa función?
Código PHP:
echo sumar(156); // imprime 12... 
Atte... DarkXNightmare
__________________
Cambiando mi Web... sean pacientes :P
  #167 (permalink)  
Antiguo 15/10/2006, 18:36
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 8 meses
Puntos: 25
Crear sencillo libro de visitas

P: Libro de Visitas:
R: Aquí muestro un secillo código para un libro de visitas, cabe destacar que no cuenta con smileis, ni BBcode. Es para quienes no quieren un gran libro de visitas pero si sencillo y efectivo.

Primero hay que crear una base de datos con el nombre que ustedes elijan junto con 3 tablas llamadas visitordata, name y comment. Posteriormente escriben la base de datos en los campos que sean necesarios.

Guardar como miLibro.php
Código PHP:
<form action='fijarMensaje.php' method='post'>
Su Nombre: <input type='text' name='name' size='20'><br>
Comentario:<br>
<
textarea name='comment' rows='5' cols='40'></textarea><br>
<
input type='submit' name='submit' value='Enviar'></form

Guardar como con.php
Código PHP:
<?php
$db 
mysql_connect("localhost""usuario""password") or die("No se puede conectar a la base de datos(mySQL).");
if(!
$db)
die(
"no existe la base de datos");
if(!
mysql_select_db("nombre_db",$db))
die(
"No hay base de datos seleccionada.");
if(!
get_magic_quotes_gpc())
{
$_GET array_map('mysql_real_escape_string'$_GET);
$_POST array_map('mysql_real_escape_string'$_POST);
$_COOKIE array_map('mysql_real_escape_string'$_COOKIE);
}
else
{
$_GET array_map('stripslashes'$_GET);
$_POST array_map('stripslashes'$_POST);
$_COOKIE array_map('stripslashes'$_COOKIE);
$_GET array_map('mysql_real_escape_string'$_GET);
$_POST array_map('mysql_real_escape_string'$_POST);
$_COOKIE array_map('mysql_real_escape_string'$_COOKIE);
}

?>
Guardar como fijarMensaje.php
Código PHP:
<?php
include "con.php";
if(isset(
$_POST['submit']))
{
$name=$_POST['name'];
$comment=$_POST['comment'];
if(
strlen($name)<1)
{
print 
"Usted no ingreso un Nombre.";
}
else if(
strlen($comment)<1)
{
print 
"Usted no ingreso un comentario.";
}
else
{
$insert="Insert into visitordata (name,comment) values('$name','$comment')";
mysql_query($insert) or die("No se pudo insertar el comentario");
print 
"Comentario agregado. <A href='Comentarios.php'>Ver aquí</a> para ver los comentarios.";

}
?>
Guardar como Comentarios.php
Código PHP:
<?php
include "con.php";
$getdata="SELECT * from visitordata order by entryID desc";
$getdata2=mysql_query($getdata) or die("Could not get data");
while(
$getdata3=mysql_fetch_array($getdata2))
{
$getdata3[name]=strip_tags($getdata3[name]);
$getdata3[comment]=strip_tags($getdata3[comment]);
print 
"Nombre: $getdata3[name]<br>";
print 
"Comentario:<br>";
print 
"$getdata3[comment]<br>";
<
hr>
}
?>
Saludos
__________________
Hospedaje Web al mejor costo!
  #168 (permalink)  
Antiguo 31/10/2006, 01:09
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 8 meses
Puntos: 25
P: Validar email de una forma más completa
R: aqui esta la solución. Usaremos "eregi", variables globales, regexps, if-else.

Código PHP:
$email_correcto "^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$";
$caracteres_extranos "^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$";

// Validamos la dirección, usamos caracteres comunes
if (eregi($email_correcto$email)) {
  echo(
"La dirección <i>$email</i> es válida.");
}

/* Validamos la dirección, tomamos en cuenta que algunos proveedores permiten caracteres extraños.*/
else if (eregi($caracteres_extranos$email)) {
  echo(
"La dirección <i>$email</i> contiene caracteres extraños, pero comunmente no afecta el script. Se tomará como válida.");
}

// Si nada de lo anterior pasa... return false
else {
  echo(
"La dirección <i>$email</i> no es válida.");

Te recuerdo que la variable $email es igual al campo del formulario de tu página web.

Saludos
__________________
Hospedaje Web al mejor costo!
  #169 (permalink)  
Antiguo 09/11/2006, 20:34
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 8 meses
Puntos: 25
P: Como cortar una cadena de texto larga con puntos supensivos.
R: substr!

Bueno, aquí les pongo un sencillo ejemplo pero práctico para aquellas personas que deseen reemplazar cadenas de texto largas por "x" número de caracteres y finalizando con puntos suspensivos.

Ejemplo:
Código PHP:
$texto="Hola, yo soy fanatico de ForosdelWeb La comunidad!";
echo 
substr($texto012)."..."
Esto dará como resultado:
Hola, yo soy...

Saludos.
__________________
Hospedaje Web al mejor costo!
  #170 (permalink)  
Antiguo 19/11/2006, 07:01
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 8 meses
Puntos: 25
P: Contador de visitas(para articulos, noticias, similares)
R: Muchas se pregunta uno sobre, contadores de visitas, contadores de filas pero no de un contador que nos muestre cuantas veces ha sido visitado algún artículo que hemos publicado, alguna noticia o similar. Pues bien aquí la solución.

Código PHP:
$arcontador=fopen("contador.php","r"); // Archivo contador.php chmod 777
// para escribir
$obtener=fread($arcontador,filesize("contador.php"));
// leemos
$obtener=$obtener+1;
// aumentamos 1 que puede ser +1 o ++ y cerramos
fclose($arcontador);
$arcontador1=fopen("contador.php","w");
fputs($arcontador1,$obtener);
//input new value
fclose($arcontador1);
$arcontador2=fopen("contador.php","r");
$reciente=fread($arcontador2,filesize("contador.php"));
// hay valores nuevos? los escribimos
print "$reciente";
//imprimimos
fclose($arcontador2); 
El funcionamiento no es de mucha ciencia, tengo que admitirlo la función fclose es muy sencilla. El archivo contador.php debe ser incluido en la página donde quieras que sea mostrado el número de visitas por ende el archivo será abierto contara hasta los rehash que uno dé. El contador es principalmente como he dicho para articulos, noticias, etc. Si lo puede mejorar mucho mejor.

Saludos
__________________
Hospedaje Web al mejor costo!
  #171 (permalink)  
Antiguo 27/12/2006, 10:26
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 18 años, 3 meses
Puntos: 5
Re: FAQ's de PHP

Tema: Php desde linea de comandos

Pregunta: ejecutar php desde linea de comandos en "Linux"

Respuesta: instalacion del php4-cli y creacion de un script

primero hay que instalar un interprete para php desde la linea de comandos.
se llama php4-cli, para esto instalar con apt-get en caso de un debian o ubuntu sino yu, yaz, urpmi dependiendo de la distro
Código:
# apt-get install php4-cli
despues podemos crear cualquier script en php.
para esto uno clasico.
con nuestro editor favorito vi, gedit, nano, joe

Código:
# vi ejemplo1.php
Código PHP:
#!/usr/bin/php 
<?php 
        $saludar 
"Hola Mundo"

        echo 
$saludar."\n";
?>
depues para ejecutarlo o hacerlo funcionar
le otorgamos un permiso de ejecucion de la siguiente manera

Código:
# chmod 755 ejemplo1.php
y para terminar lo hacer correr

Código:
# ./ejemplo1.php
__________________
~~[FiDeLio]~~
  #172 (permalink)  
Antiguo 27/12/2006, 10:42
Avatar de .php  
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 18 años, 3 meses
Puntos: 5
Mensaje Re: FAQ's de PHP

Tema: Php desde linea de comandos

Pregunta: enviar un correo desde la linea de comando a distintos destinatarios

Respuesta: crear script con funcion mail() y recivir parametro desde la linea de comandos

creamos buestro 2° ejemplo
Código:
# vi ejemplo2.php
escribimos lo siguiente
Código PHP:
#!/usr/bin/php
<?php
$name           
=       "Sevicios a Usuarios";
$txtmail        =       "[email protected]";
$txtnom         =       "Administrador del sistema";
$para           =       $argv[1];
$Asunto         =       "Este es el 2° ejemplo";
$Contenido      =       "este es un contenido";
$to             =       "FROM: $txtnom < $txtmail >\n";
if(!
mail($para,$Asunto,$Contenido,$to)){
        echo 
"Su correo no se puede enviar a:$para por razones de seguridad\n";
}else{
        echo 
"Se ha enviado correctamente su mail a $para\n";
}
?>
Código:
# chmod 755 ejemplo2.php
# ./ejemplo2.php  [email protected]
no olvidar que debe estar configurado el smpt
__________________
~~[FiDeLio]~~

Última edición por .php; 27/12/2006 a las 19:17
  #173 (permalink)  
Antiguo 27/04/2007, 14:19
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 19 años, 4 meses
Puntos: 1
Tema Detectar disponibilidad de dominios (.com/.net/.org)

Pregunta ¿Cómo hago para detectar yo mismo si un dominio esta disponible?

Respuesta Usando esta funcion. (cplus trajo el borrador, y yo la corregi)

Código de ejemplo con comentarios:

Código PHP:
<?
function checkDomainReg($domain,$server) {
    if(!
$server){
        
$server 'whois.crsnic.net';
        
$lineNumber 8;
        
$fp fsockopen ($server43, &$errnr, &$errstr) or die("$errno: $errstr");
        
fputs($fp"$domain\n");
        
$x=0;
        while (!
feof($fp)) {
            
$serverReturn fgets($fp2048);
            
$serv.=$serverReturn;
            if (
$x == $lineNumber) {
                
$line $serverReturn;
            }
            
$x++;
        }
        
fclose($fp);
        
$result=preg_match("/no\smatch/i",$line)?0:1;
        return 
$result;
    }else{
        
$lineNumber 8;
        
$fp fsockopen ($server43, &$errnr, &$errstr) or die("$errno: $errstr");
        
fputs($fp"$domain\n");
        while (!
feof($fp)) {
            
$serverReturn .= fgets($fp2048);
        }
        
$result=substr_count($serverReturn,'NOT FOUND')?0:1;
        return 
$result;
    }
}

if(!
$dominio){
?>

<form method="POST" action= "<?=$PHP_SELF?>">
<b>Revisar si el dominio esta disponible</b>
<P>
<INPUT name="dominio" SIZE="30" MAXLENGTH="35">
.
<select name="ext" id="ext">
<option value="com" selected>com</option>
<option value="net">net</option>
<option value="org">org</option>
</select>
<P> <INPUT TYPE="SUBMIT" VALUE="Revisar">
</P>
</FORM>
<?
}
else{
    
$si='#00AA11';
    
$no='#FF0000';
    
$com=checkDomainReg("$dominio.com",'');
    
$net=checkDomainReg("$dominio.net",'');
    
$org=checkDomainReg("$dominio.org",'whois.pir.org');
    echo 
'<font color="'.($com?$no:$si).'"><b>'.$dominio.'.com</b></font><br>';
    echo 
'<font color="'.($net?$no:$si).'"><b>'.$dominio.'.net</b></font><br>';
    echo 
'<font color="'.($org?$no:$si).'"><b>'.$dominio.'.org</b></font><br>';
}
?>


Consultamos "dominio.com" y mostrará los dominios en rojo si no estan disponible y en verde si estan disponibles. Saludos!

PD: Este tema de dominios es dudoso, hay tanto negocio que me llego hasta desidir hacerme mi propio script para asi no haya casi posibilidad de que sepan que dominio quiero registrar... aprovechalo.
__________________
Dios es la unica fuente de todo bien.
  #174 (permalink)  
Antiguo 08/05/2007, 07:48
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Re: FAQ's de PHP

Tema: Manipulación de datos
Pregunta: ¿Cómo puedo exportar tablas de Mysql en excel desde php?
Respuesta: Llamando a este script por browser:
Código PHP:
/*
Mysql To Excel
Generación de excel versión 1.0
Nicolás Pardo - 2007
*/
#Conexion a la db
require_once('__conn.php');

#Sql, acá pone tu consulta a la tabla que necesites exportar filtrando los datos que creas necesarios.
$sql "
SELECT 
    *
FROM
    usuarios
WHERE
    activo > -1
ORDER BY
    codigo DESC
"
;

$r mysql_query$sql ) or trigger_errormysql_error($conn), E_USER_ERROR );
$return '';
if( 
mysql_num_rows($r)>0){
    
$return .= '<table border=1>';
    
$cols 0;
    while(
$rs mysql_fetch_row($r)){
        
$return .= '<tr>';
        if(
$cols==0){
            
$cols sizeof($rs);
            
$cols_names = array();
            for(
$i=0$i<$cols$i++){
                
$col_name mysql_field_name($r,$i);
                
$return .= '<th>'.htmlspecialchars($col_name).'</th>';
                
$cols_names[$i] = $col_name;
            }
            
$return .= '</tr><tr>';
        }
        for(
$i=0$i<$cols$i++){
            
#En esta iteración podes manejar de manera personalizada datos, por ejemplo:
            
if($cols_names[$i] == 'fechaAlta'){ #Fromateo el registro en formato Timestamp
                
$return .= '<td>'.htmlspecialchars(date('d/m/Y H:i:s',$rs[$i])).'</td>';
            }else if(
$cols_names[$i] == 'activo'){ #Estado lógico del registro, en vez de 1 o 0 le muestro Si o No.
                
$return .= '<td>'.htmlspecialchars$rs[$i]==1'SI':'NO' ).'</td>';
            }else{
                
$return .= '<td>'.htmlspecialchars($rs[$i]).'</td>';
            }
        }
        
$return .= '</tr>';
    }
    
$return .= '</table>';
    
mysql_free_result($r);
}
#Cambiando el content-type más las <table> se pueden exportar formatos como csv
header("Content-type: application/vnd-ms-excel; charset=iso-8859-1");
header("Content-Disposition: attachment; filename=NombreDelExcel_".date('d-m-Y').".xls");
echo 
$return
Totalmente adaptable con solo cambiar el query.

Espero sea útil
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #175 (permalink)  
Antiguo 14/05/2007, 09:00
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Re: FAQ's de PHP

Pregunta: Como puedo armar un árbol de categorías al estilo:
categoria1
-categoria1.1
--categoria1.1.1
--categoria1.1.2
categoria2
-categoria2.1

Respuesta:

Primero necesitamos una tabla en mysql como esta:

Código:
CREATE TABLE `categorias` (
  `codigo` int(11) unsigned NOT NULL auto_increment,
  `nombre` varchar(255) default NULL,
  `padre` int(11) unsigned NOT NULL default '0',
  PRIMARY KEY  (`codigo`)
) TYPE=MyISAM;


insert into `categorias` values 

(1,'categoria1',0),

(2,'categoria1.1',1),

(3,'categoria1.1.1',2),

(4,'categoria1.1.2',2),

(5,'categoria2',0),

(6,'categoria2.1',5);
Luego, con esta función podemos listarla:

Código PHP:
function arbol$padre$nivel ){
    
$nivel++;
    
$r mysql_query"SELECT * FROM categorias where padre ='$padre' " );
    while( 
$rs mysql_fetch_assoc$r ) ){
        echo 
str_pad($rs["nombre"], strlen($rs["nombre"])+($nivel-1), "-"STR_PAD_LEFT). "<br />";
        
arbol$rs["codigo"], $nivel );
    } 
mysql_free_result$r );
}
$nivel 0;
arbol0$nivel ); 
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #176 (permalink)  
Antiguo 01/06/2007, 12:25
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 8 meses
Puntos: 20
Re: FAQ's de PHP

Pregunta:
¿Por qué si guardo mis .php con codificación UTF-8 me aparece un error del tipo Headers already sent?
Respuesta:
Esto sucede porque algunos programas, al guardar un archivo con codificación UTF-8 agregan al principio del archivo 3 caracteres hexadecimales, lo cual genera dicho error. Para solucionar esto es necesario recurrir a un editor hexadecimal (como el HHD Free Hex Editor), abrir el archivo .php y borrar los primero 3 caracteres del archivo.
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #177 (permalink)  
Antiguo 05/06/2007, 10:20
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Re: FAQ's de PHP

Pregunta: Hay una función para agregar ceros a la izquierda a un número?
respuesta: Si, la hay:
Código PHP:
#By nicolaspar 2007
function ceros($numero$ceros=2){
    return 
sprintf("%0".$ceros."s"$numero );
}

echo 
ceros(25); #out 000002
echo ceros(10); #out 0010 
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #178 (permalink)  
Antiguo 05/06/2007, 15:39
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Re: FAQ's de PHP

Pregunta: Puedo saber la distancia de una coordenada a otra?
Respuesta: usando la siguiente función:

Código PHP:
<?
#By nicolaspar 2007
function distancia($latitud1$longitud1$latitud2$longitud2$millas true){
    
$pi180 M_PI 180;
    
#Transformo las coordenadas en radiales
    
$latitud1 *= $pi180$longitud1 *= $pi180$latitud2 *= $pi180$longitud2 *= $pi180;
    
$r 6378.139// radio medio de tierra por kilómetro (WGS84)
    
$distanciaLatitud $latitud2 $latitud1;
    
$distanciaLongitud $longitud2 $longitud1;
    
#Formula de Haversine
    
$a sin($distanciaLatitud 2) * sin($distanciaLatitud 2) + cos($latitud1) * cos($latitud2) * sin($distanciaLongitud 2) * sin($distanciaLongitud 2);
    
#Calculo la distancia
    
$c atan2(sqrt($a), sqrt($a));
    
$km $r $c;
    
#La saco en millas o en km
    
return $millas $km 0.621371192 $km;
}
/**
*    Ej,
*    Desde Buenos Aires Observatorio Lat -34.56667 | long -58.41667
*    Hasta Adelaide Airport, Oceania, Australia, Lat -34.93333 | Long 138.51667
**/
echo distancia(-34.56667, -58.41667, -34.93333138.51667false) ." Km<br />";
echo 
distancia(-34.56667, -58.41667, -34.93333138.51667) ." Millas";
?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #179 (permalink)  
Antiguo 15/06/2007, 08:26
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: FAQ's de PHP

Pregunta: ¿Por qué me sale "Warning: Cannot modify header information - headers already sent by (output started at [1]:[2]) in [3] on line [4]"

Se trata de un error bastante común y a veces difícil de detectar.
No se puede nunca enviar texto antes de enviar cabeceras HTTP (con header(), set_cookie() o session_start(). )

Esto quiere decir que no puede haber ningún "echo" o "printf" antes de una sentencia que envíe cabeceras, pero también quiere decir que no puede haber nada de código html ni texto antes de la primera aparición de <?php (o <? ) en un archivo php. A veces se nos escapa algún espacio o línea en blanco, y eso es suficiente para que se produzca el error.

¿Cómo arreglarlo? Usando la información del error mismo.
Más arriba marqué las partes que hay que revisar:
[1] - Ruta del archivo php que inició la salida (el que mandó texto)
[2] - Línea del archivo [1] en la que se produjo la salida.
[3] - Archivo que intentó enviar una cabecera, luego de que la salida comenzara (normalmente es el mismo que [1])
[4] - Línea de [3] en la que se intentó enviar la cabecera.

Basta ir a [2] y ver si se puede evitar el envío de texto.
  #180 (permalink)  
Antiguo 19/06/2007, 09:06
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: FAQ's de PHP

Pregunta: ¿Por qué en mi página se ven caracteres extraños en vez de tildes o eñes?

El problema suele ser la codificación de caracteres. El navegador es instruido para mostrar los caracteres usando una codificación X, mientras que la página está usando la codificación Y, y por eso se producen los errores.

Hay 2 lugares en donde debe coincidir la codificación de caracteres:
1.- Etiqueta META Content-Type
2.- Editor de texto (forma en la que guarda, depende del editor)

Hay que configurar uno de los dos para que coincida con la codificación de caracteres que usa el otro, lo ideal es que ambas estén en iso8859-1 (o Latin1), o aún mejor si están en UTF-8.

En caso de que no esté presente la etiqueta META, el navegador codificará la página como se lo indique la cabecera Content-Type que le envía el servidor. También puede configurarse esta cabecera HTTP desde la configuración del servidor (en el caso de Apache, en el archivo httpd.conf)
Pero en presencia de la etiqueta META, no es necesario preocuparse de esto.

Si se está usando una base de datos, es importante hacer que la misma también use la misma codificación de caracteres, en mysql configurando el "COLLATE" de toda la base o tabla por tabla.

En mi experiencia la configuración de la base de datos es la menos importante.
Si se ven caracteres extraños en el navegador, las primeras cosas a revisar deberían ser la presencia de la etiqueta META (y su contenido) y luego la configuración del editor de texto que se esté usando, para que ambas coincidan.
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 07:51.