Comunidad de diseño web y desarrollo en internet online

Biblioteca de Aporte de Codigos PHP.

Citar            
MensajeEscrito el 13 Jun 2005 07:54 pm
Puedes colaborar ingresando codigo PHP en este hilo,
la idea de este tema es crear una cantidad bien nutrida de codigos PHP, por lo general básicos, si tienes algún código que quieras aportar puedes postearlo en este hilo, con su debida explicación, ejemplos etc... asegurate de antes de postearlo, verificar que funcione correctamente. intenta optimizarlo al maximo y evita texto innecesario, recuerda que hay mas personas que desean postear su codigo aqui.

por favor no postees preguntas aca, evita codigo fuente inseguro, en caso de postear algun código maligno, comentarios o preguntas en este tema será removido por el moderador.
manda un MP o un mail o crea otro tema haciendo referencia a este tema para hacer saber tus dudas y comentarios.


muchas gracias. :wink:

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  



Ultima edición por jhony192 el 08 Ago 2005 05:03 pm, editado 1 vez

Just Another Programmer

firefox
Citar            
MensajeEscrito el 13 Jun 2005 08:00 pm
Forzar descarga de Archivos con PHP

Para forzar la descarga de un archivo creas un archivo con este code
y le pones un nombre yo en este caso lo llamare down.php

Código :

<?
#aqui defines la carpeta donde tendras los archivos.
#es buena idea que esta carpeta no sea de acceso publico.
#sin embargo tampoco es muy necesario.
$carpeta="./carpetadearchivos/";

if(file_exists($carpeta.basename($_GET['file']))
{
$file=$carpeta.$_GET["file"];
   header("Content-Transfer-Encoding: binary");
   header("Content-type: application/force-download");
   header("Content-Disposition: attachment; filename=".basename($file));
   header("Content-Length: ".filesize($file)); 
   readfile($file);
}
else
{
?>
Usted esta accediendo a un archivo que no existe en la carpeta de descargas.
<?
}
?>



evita dejar espacios al inicio y al final de el archivo, porque te dara error.
luego lo llamas asi: ./down.php?file=tutorial.zip
en caso de que quieras bajar un archivo llamado tutorial.zip
este script tiene utilidad si quieres forzar la descarga de un archivo html, htm o php, recuerda meter los archivos en unca carpeta aparte, analizar el script, evita el copy&paste. :wink:

Editado: arreglado el agujero de seguridad :wink:

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  



Ultima edición por jhony192 el 08 Ago 2005 04:37 pm, editado 5 veces

Just Another Programmer

firefox
Citar            
MensajeEscrito el 14 Jun 2005 08:09 pm
Enmarcar Contenido de Paginas en Plantillas de Forma Dinamica.

Primero creas una pagina con todo el diseño diagramación y todo lo necesario, usa Rutas completas, cuando lo pruebes en carpetas sabras porque te lo digo
:wink:
al inicio de la pagina metes algunas funciones o un include a tu libreria de funciones etc...
asi:

Código :

<?
#ejemplo:
#include('lib.inc.php'); //incluir libreria de funciones
?>


luego de tener la pagina creada llevas el puntero hasta donde quieres que aparezca el contenido, te pasas a edición de codigo


y le metes la siguiente linea donde esta el cursor:

Código :

<? function shutdown(){ ?>


luego te vas al final de la plantilla y le metes la siguiente linea:

Código :

<? exit; } register_shutdown_function("shutdown"); ?>



y eso es todo señores luego en cada pagina que quieran incluir la plantilla al inicio de el code visible le meten esto:

Código :

<? include('./lib.gui.php'); ?>


suponiendo que su archivo se llame ./lib.gui.php y este en la misma carperta.
Aqui un Ejemplo de como quedaria nuestro codigo y de como se agrega el codigo PHP
primero sacamos el codigo de nuestra plantilla y definimos donde esta el contenido de la misma.

plantilla.php escribió:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Mi P&aacute;gina Sem&aacute;ntica</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
body{
background-color:#efefef;
color:#666666;
font:11px/16px Arial, Helvetica,sans-serif;
}

#principal{
background-color:white;
width:600px;
}
#contenido{
width:400px;
margin-left:180px;
border-left:1px solid #DDDDDD;
padding-left:12px;
}

#navegacion{
width:150px;
float:left;
}
#header{
height:60px;
background-color:#1E90FF;
}
h1{
font-size:16px;
text-transform:uppercase;
letter-spacing:2px;
color:white;
padding:22px;
}
#navegacion ul{
padding:0;
margin:0;}

#navegacion li{
list-style-type:none;
border-bottom: 1px solid #DDDDDD;
border-left:4px solid #1E90FF;
color:#1E90FF;
margin:1px;
padding:4px;
}

#pie{
border-top:1px solid #1E90FF;
font-size:10px;
color:#AAAAAA;
padding:4px;
}
-->
</style>
</head>

<body>
<div id="principal">
<div id="header">
<h1>Encabezado</h1>
</div>
<div id="navegacion">
<ul>
<li>Inicio </li>
<li>Seccion 1 </li>

<li>Seccion 2 </li>
<li>Seccion 3 </li>
<li>Seccion 4 </li>
<li>Seccion 5 </li>
</ul>
</div>
<div id="contenido">
<h2>El titulo de este contenido</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Donec augue lacus, aliquam in, luctus in, gravida vel, mi.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
posuere cubilia Curae; Nunc aliquet ultrices ante
Mauris nunc dolor, egestas vel, auctor sed, dignissim vitae,
enim. Phasellus tincidunt. Phasellus vel wisi id neque cursus
rhoncus. Morbi cursus tristique est.
<p> Nulla pulvinar dui sed augue. Praesent laoreet arcu in justo.
Donec velit. Nam malesuada bibendum metus. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos
hymenaeos. Curabitur et tortor quis justo faucibus rutrum.
Duis aliquam, diam eu tempor rutrum, mauris leo lacinia neque,
et consectetuer elit nisl eget arcu.
Nam tellus libero, fringilla eu, elementum quis,
sodales suscipit, turpis. </div>
<div id="pie"><p> Copyright &copy; 2004 Todos los derechos reservados</p>
</div>
</div>
</body>
</html>


Luego Creamos el archivo que sera incluido en nuestros documentos, en este caso me gusta llamarlo lib.gui.php
y metemos las funciones en los lugares correctos (comparandolo con el anterior podra identificar las diferencias)

lib.gui.php escribió:

<?
#ejemplo:
#include('lib.inc.php'); //incluir libreria de funciones
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Mi P&aacute;gina Sem&aacute;ntica</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
body{
background-color:#efefef;
color:#666666;
font:11px/16px Arial, Helvetica,sans-serif;
}

#principal{
background-color:white;
width:600px;
}
#contenido{
width:400px;
margin-left:180px;
border-left:1px solid #DDDDDD;
padding-left:12px;
}

#navegacion{
width:150px;
float:left;
}
#header{
height:60px;
background-color:#1E90FF;
}
h1{
font-size:16px;
text-transform:uppercase;
letter-spacing:2px;
color:white;
padding:22px;
}
#navegacion ul{
padding:0;
margin:0;}

#navegacion li{
list-style-type:none;
border-bottom: 1px solid #DDDDDD;
border-left:4px solid #1E90FF;
color:#1E90FF;
margin:1px;
padding:4px;
}

#pie{
border-top:1px solid #1E90FF;
font-size:10px;
color:#AAAAAA;
padding:4px;
}
-->
</style>
</head>

<body>
<div id="principal">
<div id="header">
<h1>Encabezado</h1>
</div>
<div id="navegacion">
<ul>
<li>Inicio </li>
<li>Seccion 1 </li>

<li>Seccion 2 </li>
<li>Seccion 3 </li>
<li>Seccion 4 </li>
<li>Seccion 5 </li>
</ul>
</div>
<div id="contenido">
<? function shutdown(){ ?></div>
</div>
</body>
</html><? exit; } register_shutdown_function("shutdown"); ?>

Luego de terminada tu plantilla en el resto de tus archivos agregas la siguiente linea al inicio de todo el codigo:

test.php escribió:


include('./lib.gui.php');

es importante destacar que solo el contenido debera agregarse en los demas documentos.
puedes revisar Aqui los tips de seguridad para que no puedan ser accedidos desde el web tus librerias.
Fijate bien en el codigo resaltado en negritas que alli esta la clave.
si tienes alguna duda usa tu logica o habre un nuevo tema con la pregunta.
Debo destacar que el el Codigo de plantilla.php
ha sido extraido del siguiente tutorial:
http://www.disenorama.com/tutoriales/css/disena_una_pagina_con_codigo.htm
que creanme vale la pena leerlo.
También puedes ver los ejemplos funcionando a continuación:
lib.gui.php
test.php

sinplantilla.php

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  



Ultima edición por jhony192 el 08 Ago 2005 09:06 pm, editado 6 veces

Just Another Programmer

firefox
Citar            
MensajeEscrito el 14 Jun 2005 08:40 pm
Sacar Datos a partir de una Cadena

Código :

<?
$variable="Carros@150.000@3|motos@32.000@5|chicas@48.000@5000";
$cantidades=explode('|',$variable);
for($i=0;$cantidades[$i];$i++)
{
list($producto,$precio,$cantidad)=explode('@',$cantidades[$i]);
echo "tengo ".$cantidad." ".$producto." que compre a ".$precio."$USD<br>";
}
?>

solo tu logica te dara la mejor respuesta :wink:

habia olvidado un detallito ^^ ^^ ^^
Saludos a mi amigo y medio hermano Wintkley.

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  



Ultima edición por jhony192 el 08 Ago 2005 04:38 pm, editado 2 veces

Just Another Programmer

firefox
Citar            
MensajeEscrito el 14 Jun 2005 10:43 pm

jhony192 escribió:

Código :

<?
#ejemplo:
#include('lib.inc.php'); //incluir libreria de funciones
#$conex=mysql_connect('host','user','pass');
#mysql_select_db('database',$conex);
?>
Con todo respeto, eso no se debe hacer. No se debe conectar a la base de datos en los archivos que están en el directorio público del servidor. Para mayor seguridad, se mete en un php externo al directorio público y luego lo incluyes.

Con las bases de datos y sus conexiones NO se juega.

Por Pedro

BOFH

3017 de clabLevel

3 tutoriales
6 articulos

  Bastard Operators From Hell

Honduras

firefox
Citar            
MensajeEscrito el 15 Jun 2005 03:28 pm
Traductor de Idiomas
bueno he aqui un traductor de idiomas.
debo decir que este traductor no funciona mal, si a alguno le funciona incorrectamente es debido a que esta escribiendo las palabras en orden errado, o sin los acentos y signos de puntuación debidamente.

esta es la función:

Código :

<?
function traducir($texto, $origen="es",$destino="en")
      {
      $html=implode('',@file("http:/"."/translate.google.com/translate_t?text=".urlencode(utf8_encode($texto)).'&langpair='.$origen.'|'.$destino.'&hl=es&ie=UTF8'));
      preg_match_all('/name=q rows=5 cols=45 wrap=PHYSICAL>(.*)<\/textarea>&nbsp;&nbsp;<input type=hidden name=hl/i',$html,$matches);
      if($matches[1][0]!='')
        {
        return $matches[1][0];
        }
        else
        return false;
}
?>

aqui los ejemplos:

Código :

música = <?=traducir("música","es","en");?> es-en


Código :

international = <?=traducir("international","en","es");?> en- es


y las opciones entre idiomas:

Código :

<option value="en|de">inglés a alemán</option>
<option value="en|es">inglés a español</option>
<option value="en|fr">inglés a francés</option>
<option value="en|it">inglés a italiano</option>
<option value="en|pt">inglés a portugués</option>
<option value="en|ja">inglés a japonés BETA</option>
<option value="en|ko">inglés a coreano BETA</option>
<option value="en|zh-CN">inglés a chino&nbsp;(simplificado) BETA</option>
<option value="de|en">alemán a inglés</option>
<option value="de|fr">alemán a francés</option>
<option value="es|en">español a inglés</option>
<option value="fr|en">francés a inglés</option>
<option value="fr|de">francés a alemán</option>
<option value="it|en">italiano a inglés</option>
<option value="pt|en">portugués a inglés</option>
<option value="ja|en">japonés a inglés BETA</option>
<option value="ko|en">coreano a inglés BETA</option>
<option value="zh-CN|en">chino&nbsp;(simplificado) a inglés BETA</option>


queda bajo estricta responsabilidad de quien lo use las tareas de este code.

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  



Ultima edición por jhony192 el 08 Ago 2005 04:39 pm, editado 3 veces

Just Another Programmer

firefox
Citar            
MensajeEscrito el 15 Jun 2005 04:26 pm
Listar imagenes de una carpeta especificada:

Código :

<?php
$imagenes=glob("./imagenes/*.jpg");
echo '<img width="100px" height="100px" src="'.implode('"><br><img width="100px" height="100px" src="',$imagenes).'">';
?>


glob retorna una array con los nombres de los archivos .jpg que tengamos en la carpeta imagenes, ya que estamos usando el comodín * :P , si quieres listar otro tipo de archivo le debes cambiar solo jpg por la extensión que deseas ya sea gif, png, etc. , tambien se podria usar el comodin de * para los tipos de archivos pero deberias cuidar que en esa carpeta solo hayan imagenes para evitar errores :wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab



Ultima edición por Maikel el 07 Ago 2005 04:35 pm, editado 1 vez

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 07 Ago 2005 03:31 pm
Mis Script PHP no Funcionan porque register_globals = Off

si este es tu problema, deberias cambiar todo el SCRIPT por variables globales, pero si ves que no vale la pena tal esfuerzo puedes
ingresar al inicio de tu script las siguientes lineas:

Código :

if(!empty($_REQUEST)) extract($_REQUEST);
if(!empty($_SERVER)) extract($_SERVER);

if(!empty($_ENV)) extract($_ENV);
if(!empty($_GET)) extract($_GET);
if(!empty($_POST)) extract($_POST);
if(!empty($_COOKIE)) extract($_COOKIE);
if(!empty($_SESSION)) extract($_SESSION);


esto disminuira la seguridad de tu script, igual como si register_globals estuviera en on, pero no te preocupes por eso ahora,
de todas formas tu script no valia la pena. :wink:
porque si valiera la pena lo hubieras reparado. ^^ ^^ ^^
coloca solo el que corresponda a las variables que quieras sacar.

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  

Just Another Programmer

firefox
Citar            
MensajeEscrito el 07 Ago 2005 09:49 pm
sobre forzar descarga de archivos con php, monté un pequeño tutorial
http://www.therror.com/documentos/1010/forzar_descargas_con_php

considero que mi script es mucho más seguro, pues con el de coderic se puede llegar a robar incluso el mismo código fuente del sitio.

Nota: Error mencionado ha sido solucionado.

Por fael

BOFH

2443 de clabLevel

3 tutoriales
2 articulos

 

firefox
Citar            
MensajeEscrito el 08 Ago 2005 06:31 pm
miniSistema de monitoreo de puertos para Servidores

Código :

<?
header('Content-Type: image/GIF');
$var=explode('@',$_SERVER['QUERY_STRING']);
$status=@fsockopen($var[0],$var[1]);
if(!$status)
readfile('images/2.gif');
else
readfile('images/0.gif');
?>


para ello Tendrian que tener las Siguientes imagenes en su carpeta images



Luego en un documento HTML cualquiera llaman las imagenes de este modo:

Código :

<img src="ruta/monitoreo.php?ipdelservidor@puerto">


Como ejemplo les dejo el monitoreo a iCADServers.
en varios Puertos

Estado | Puerto | Nombre

21 ftp
22 SSH
23 telnet
25 SMTP
53 DNS
80 Apache
106 3Com
110 Mail
113 Auth
143 IMAP
443 https
465 URL
993 IMAPS
995 POP3S
3306 MySql
8000 Radio


Bueno espero que lo Disfruten.
mas adelante hare algo mas completo. :wink:

El ejemplo en el Siguiente Link:
http://www.icad.com.ve/status.php

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  



Ultima edición por jhony192 el 11 Ago 2005 02:47 pm, editado 1 vez

Just Another Programmer

firefox
Citar            
MensajeEscrito el 08 Ago 2005 08:55 pm
Revisar Disponibilidad de Dominios

Código :

<?
function checkear_dominio($dominio,$tld)
{
    $tlds=array('com'=>'whois.crsnic.net@No match for','net'=>'whois.crsnic.net@No match for','org'=>'whois.publicinterestregistry.net@NOT FOUND','info'=>'whois.rotld.ro@Not Found');
   $valores=explode('@',$tlds[$tld]);
   if(($fp = fsockopen($valores[0],43))==false)
   {
   $errores.="No se pudo conectar al servidor de Whois";
   }

    fputs($fp,$dominio.'.'.$tld."\n");
    while(!feof($fp)){$salida.=fgets($fp,128);}
    fclose($fp);

    if (eregi($valores[1],$salida)){
        return 'false';
    }else{
        return 'true';
    }
}
?>


Ejemplos:

cristalab.com <?=checkear_dominio('cristalab','com');?>
coderic.com <?=checkear_dominio('coderic','com');?>
coderic.net <?=checkear_dominio('coderic','net');?>
coderic.org <?=checkear_dominio('coderic','org');?>

por desgracia solo tiene para .com, .net y .org

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  

Just Another Programmer

firefox
Citar            
MensajeEscrito el 11 Ago 2005 02:38 pm
a continuación una barra de porcentaje creada con GD, es facíl de hacer y esta muy bien explicada. este post esta repetido, una vez lo deje en aportes, pero creo conveniente unirlo a este hilo a continuación el código:

Código :

<?
//Especificamos al navegador que la imagen es del tipo JPG
header('Content-type: image/jpeg');
//Sacamos de la cadena de interrogación la variable que usaremos.
//en caso de ser igual a 0 o no estar definida que coloque 1 que es el minimo valor divisible
$cant=($_SERVER['QUERY_STRING'])?$_SERVER['QUERY_STRING']:1;
//sacamos según el porcentaje obtenido un valor relativo al tamaño de nuestra imagen
$total=round((($cant/100)*150));
//Creamos la Imagen 
$img=imagecreatetruecolor(150,10);
//Creamos los Colores que usaremos en nuestra imagen
$verde=imagecolorallocate($img,51, 175, 41);
$negro=imagecolorallocate($img,0, 0, 0);
$amarillo=imagecolorallocate($img,251, 222, 94);
//Creamos Los rectángulos rellenos con los tamaños especificados por coordenadas
imagefilledrectangle($img,1,1,148,8,$verde); //Este rectángulo cubrira toda la imagen será como un fondo.
imagefilledrectangle($img,$total,1,148,8,$amarillo); //Este rectángulo Cubrira la parte del final en amarillo.
imagerectangle($img,$total,0,150,10,$negro); //Ahora Creamos un regtangulo para hacer la división entre ambos colores
imagerectangle($img,0,0,150,10,$negro); //y Creamos un regtángulo del tamaño de la imagen para que parezca un borde
//mostramos la imagen
imagejpeg($img);
//borramos la imagen de la memoria.
imagedestroy($img);
exit; //salimos del script
?>

y aqui los ejemplos:









Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  

Just Another Programmer

firefox
Citar            
MensajeEscrito el 16 Ago 2005 01:33 pm
Enviar Variables POST a travéz de una URL
Esta función ha sido creada para enviar datos a una url mediante metodo post, es una extracción del manual oficial de www.php.net
y ha sido resumido, mejorado y explicado por mi en este post.
espero que les sea de utilidad.

Código :

<?
function sendpost($direccion,$variables, $referido="") {
   global $_SERVER;
//Desarmamos la URL definida en $dirección
   $infodeurl=parse_url($direccion);
//En caso de que el parametro $referido no este definido, que coloque el documento actual
   if($referido=="") $referido=$_SERVER["SCRIPT_URI"];
//Desglosamos las variables que se van a enviar
   foreach($variables as $key=>$valor)
    $valores[]=$key."=".urlencode($valor);
//Convertimos las Variables desglosadas en una cadena de consulta
   $datos=implode("&",$valores);
//En caso de que el puerto no esté definido en la url, utilizaremos por defecto el puerto 80
   if(!isset($infodeurl["port"]))  $infodeurl["port"]=80;
//Creamos la Data que se enviara por medio del socket
   $retorno.="POST ".$infodeurl["path"]." HTTP/1.1\n";
   $retorno.="Host: ".$infodeurl["host"]."\n";
   $retorno.="Referer: $referer\n";
   $retorno.="Content-type: application/x-www-form-urlencoded\n";
   $retorno.="Content-length: ".strlen($datos)."\n";
   $retorno.="Connection: close\n";
   $retorno.="\n";
//incluimos las variables en la data
   $retorno.=$datos."\n";
//Conectamos al dominio especificado en la URL
   $fp = fsockopen($infodeurl["host"],$infodeurl["port"]);
//le enviamos los datos
   fputs($fp, $retorno);
//Sacamos el resultado linea a linea
   while(!feof($fp))
   {
      $resultado .= fgets($fp, 128);
   }
//Cerramos la conexión con el servidor
   fclose($fp);
//Y retornamos los datos.
   return $resultado;
}
?>


en el ejemplo 1 enviamos las variables que recibimos en el documento actual

Ejemplo 1 escribió:

echo sendpost("http://www.cristalab.com/comentarios.php",$_POST,"http://www.cristalab.com/");

y en el ejemplo 2 definimos las variables desde el script

Ejemplo 2 escribió:


$vars["nombre"]="Neftali Yaguas";
$vars["user"]="Coderic";
$vars["comentarios"]="Enviando variables desde el post.";
echo sendpost("http://www.cristalab.com/comentarios.php",$vars,"http://www.cristalab.com/");


Esto es solo un ejemplo simulado, no funcionará con los datos especificados, ya que los documentos citados no existen.

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  

Just Another Programmer

firefox
Citar            
MensajeEscrito el 10 Sep 2005 04:19 pm
Envio de E-mail con Archivos Adjuntos, y Propiedades Personalizadas.

posiblemente alguien me dirá "por favor ya no lo postees mas y quizá hasta razón tenga XD XD XD pero la verdad que esta es una función que no debe faltar en tu biblioteca de funciones.
porque se usa miles de veces y es bastante tedioso tener que volver a crear las cabezeras para cada archivo.
esta función dandole buen uso puede significar una herramienta muy importante.
ni se te ocurra hacer spam con este script, porque te encontrarán fácilmente te lo garantizo.
esta comentado en cada linea para que puedas estudiarlo.

Código :

function sendmail($asunto,$mensaje,$destinatario,$destinario,$cc='',$cco='',$reply='',$formato='',$attach='')
{
   $docsnames=NULL;//Definimos Variables
   $fcuerpo=NULL;//Definimos Variables
   if(!$formato)   $formato='html'; //En caso de no estar definido el formato tomar html por defecto
   if(!$attach)   $attach=Array(); //En caso de que no tenga archivos adjuntos, mostrar array vacio
   /* Adjuntando los Archivos al Mensaje */
   while(list($campo,$valor)=each($attach))
   {
      if($attach[$campo]['size']!=0)
      {
         if(!$attach[$campo]['data'])   $attach[$campo]['data']=fread(fopen($attach[$campo]['tmp_name'], "r"),$attach[$campo]['size']);
         $docsnames.= "X-attachments: ".$attach[$campo]['name']."\n";
         $fcuerpo   .="\n--Neftali-Yaguas\n"
                  ."Content-type: ".$attach[$campo]['type']."; name=\"".$attach[$campo]['name']."\"\n"
                  ."Content-Transfer-Encoding: BASE64\n"
                  ."Content-disposition: attachment; filename=\"".$attach[$campo]['name']."\"\n\n"
                  .chunk_split(base64_encode($attach[$campo]['data']))."\n";
      }
   }
   /* Aplicando Cabezeras al Mensaje*/
   $cabeceras =          "From: ".$destinatario."\n";
   if($cc)$cabeceras .=   "CC: ".$cc."\n";
   if($cco)$cabeceras .=    "BCC: ".$cco."\n";
   if($reply)$cabeceras .= "Reply-To: ".$reply."\n";
   $cabeceras   .=         "X-Priority: 1\n"
            .         "X-MSMail-Priority: High\n"
            .         "X-Mailer: Neftali Yaguas -\"Sendmail Attach files 1.2\"- jhony192@coderic.org\n"
            .         "Return-Path: ".$destinatario."\n"
            .         "MIME-version: 1.0\n"
            .         "Content-type: multipart/mixed; boundary=\"Neftali-Yaguas\"\n"
            .         "Content-transfer-encoding: 7BIT\n".$docsnames;
   /* Comienzo del Cuerpo del Mensaje*/
   $cuerpo=            "--Neftali-Yaguas\n"
            .         "Content-type: text/".$formato."; charset=US-ASCII\n"
            .         "Content-transfer-encoding: 7BIT\n"
            .         "Content-description:Cuerpo de Mensaje\n\n"
            .         $mensaje."\n\n".$fcuerpo."--Neftali-Yaguas--\n";
   /* Enviando el Mensaje*/
   return mail($destinario,$asunto,$cuerpo,$cabeceras);
}


para actualizaciones acerca de la función visita:
http://www.phpclasses.org/trackback/browse/package/2413.html
La forma de usarlo es la siguiente:
despues de pegar el codigo anterior al principio de tu documento, (recomiendo insertarlo desde un include)
cuando vallas a enviar email usas el siguiente codigo

Código :

<?
sendmail("Asunto del mensaje",$mensaje,'"Tu Nombre"<tumail@dominio.com>','destinario@dominio.com')
?>


donde esta la variable $mensaje que esta en negrita, esa es la variable que trae el mensaje completo, este script formatea en html

puedes editarlo de la siguiente manera:

para la variable adjunto, haces el siguiente proceso:

Código :

$archivo1['name']='imagen.jpg'; //nombre del archivo
$archivo1['tmp_name']='../imagen.jpg'; //ruta del archivo
$archivo1['size']='1500'; // peso del archivo. (por defecto es el peso calculado de tmp_name
$archivo1['type']='Tipo mime del archivo'; // ejemplo: image/jpeg, text/html
$archivo1['data']='contenido del archivo'; // este solo es necesario
# si el archivo es creado desde codigo, pero si se define este no
# sara el valor de tmp_name.



Código :

$adjunto['Archivo1']=$archivo1;
$adjunto['Archivo2']=$archivo2;
$adjunto['...']=...; // este es un nombre cualquiera.

Código :

sendmail("Asunto del mensaje",$mensaje,'"Tu Nombre"<tumail@dominio.com>','destinario@dominio.com',$cc,$cco,$replyto,$formato,$adjunto);

en caso de que los archivos adjuntos deban venir de un formulario solo hay que hacer esto:

Código :

$adjunto=$_FILES;

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  

Just Another Programmer

firefox
Citar            
MensajeEscrito el 02 Mar 2006 12:13 am
Fecha en español

OffTopics escribió:

Bueno como de costumbre un detallito que a veces se nos pasa de largo.
les recomiendo que usen como formato de fecha en todo momento el siguiente:
yyyy-mm-dd hh:ii:ss

para que no tengan problemas con las bases de datos, en mysql usen NOW()

bien continuemos, en general la mayoría habla español, por esta razón dejaré el siguiente code para que lo prueben.

Código :

<?
setlocale(LC_TIME, 'es_ES');
echo strftime("%A, %d de %B de %Y",strtotime($fecha));
?>

o bien para el caso de que se trate de la fecha actual:

Código :

<?
setlocale(LC_TIME, 'es_ES');
echo strftime("%A, %d de %B de %Y");
?>


Ejemplo escribió:

si la fecha fuera 2005-12-07 04:11:00 el resultado sería algo así:
miércoles, 07 de diciembre de 2005

otros idiomas disponibles son:
Finlandés: fi_FI
Francés: fr_FR
Inglés: en_US
Alemán de_DE

para mayor información acerca de los formatos de fecha por idioma visite:
http://www.php.net/manual/es/function.strftime.php

Por jhony192

791 de clabLevel

1 tutorial

Genero:Masculino  

Just Another Programmer

firefox
Citar            
MensajeEscrito el 03 Abr 2006 06:31 pm
Esta es una idea para usar arreglos en memoria para hacer "emparejamientos" de datos desde diversas fuentes. Espero les sea útil. Saludos

Código :

function consulta_arreglo_MySQL($consulta,$conexion,$titulo) {
      $datos=mysql_query($consulta,$conexion);
      $columnas=mysql_num_fields($datos);
      for ($inc=0;$inc<$columnas;$inc++) {
         $arreglo_nombres[$inc]=mysql_fetch_field($datos,$inc)->name;
      }
      $arreglo_final[$titulo]=$arreglo_nombres;
      while($registro=mysql_fetch_assoc($datos)) {
         for ($inc=1;$inc<$columnas;$inc++) {
            $arreglo_temp[$inc-1]=$registro[$arreglo_nombres[$inc]];
         }
         $arreglo_final[$registro[$arreglo_nombres[0]]]=
            $arreglo_temp;
      }
      return $arreglo_final;
   } /* Devuelve un arreglo asociativo que usa como llaves el primer campo de la consulta, 
el primer elemento del arreglo usa como llave la variable titulo y contiene los nombres de 
las columnas, los siguientes elementos ya usan el primer campo de cada renglon de la consulta 
como llave, y contiene un arreglo de tamaño del numero de columnas, conteniendo en orden 
cada campo de la consulta */

   function consulta_arreglo_ODBC($consulta,$conexion,$titulo) {
      $datos=odbc_exec($conexion,$consulta);
      $columnas=odbc_num_fields($datos);
      for ($inc=0;$inc<$columnas;$inc++) {
         $arreglo_nombres[$inc]=odbc_field_name($datos,$inc+1);
      }
      $arreglo_final[$titulo]=$arreglo_nombres;
      while(odbc_fetch_row($datos)) {
         for ($inc=1;$inc<$columnas;$inc++) {
            $arreglo_temp[$inc-1]=odbc_result($datos,$arreglo_nombres[$inc]);
         }
         $arreglo_final[trim(odbc_result($datos,$arreglo_nombres[0]))]=
            $arreglo_temp;
      }
      return $arreglo_final;
   } /* Devuelve un arreglo asociativo que usa como llaves el primer campo de la consulta, 
el primer elemento del arreglo usa como llave la variable titulo y contiene los nombres de 
las columnas, los siguientes elementos ya usan el primer campo de cada renglon de la consulta 
como llave, y contiene un arreglo de tamaño del numero de columnas, conteniendo en orden 
cada campo de la consulta */

function arreglos_tablas($arreglo1, $arreglo2){
   $claves=array_merge(array_keys($arreglo1),array_keys($arreglo2));
   $claves=array_unique($claves);
   sort($claves);
   /*
A partir de aquí tendrán en el arreglo claves las llaves de los dos arreglos que se pasan 
como parametros, formateados de acuerdo a las funciones de arriba. Lo demás lo dejo a 
su imaginación.
   */
}

Por Nichtigkeit

3 de clabLevel



 

Ciudad Satélite

firefox
Citar            
MensajeEscrito el 17 Nov 2006 03:59 pm
Sistema de usuarios

index.php (ingreso a la zona restringida y login) :

Código :

<?php
session_start();
// Mostrar error de Autentificación
require_once("../conn/conn.php");
if(isset($_POST["nick"])){
    require_once("permisos/validar.php");

};
if(isset($_SESSION["nivel_acceso"])){
     echo '
    <script language="JavaScript">
         var pagina="inicio/index.php"
         function redireccionar() 
             {  
              
                 parent.location.href=pagina
             } 
          setTimeout ("redireccionar()", 1000);
     </script>
    ';
}
else{
echo '
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> administración web</title>
<meta name="generator" content="editplus">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="description" content="">
</head>

<body bgcolor="#3399FF">
<div style="position: absolute; top:200px; left: 50px;"> 
    <form action="index.php" method="post">
        <table width="200">
        <tr>
            <td colspan="2"><font size="5" color="#FFFFCC">Esta usted entrando a una zona restringida</font></td>
         </tr>
         <tr>
            <td> Usuario:</td>
            <td>Password:</td>
         </tr>
         <tr>
            <td><input type="text" name="nick"></td>
            <td><input type="password" name="password"></td>
         </tr>
        <tr>
            <td colspan="2"><input type="submit" value="entrar"></td>
         </tr>
         </table> 
          
    </form>
</div>

</body>
</html>
';

};
?>

validar.php

Código :

<?php
session_start();
mysql_select_db($database_conn, $conn);
$sql= 'SELECT * FROM `usuarios` WHERE `nick` = \''.$_POST["nick"].'\' AND `password` = \''.$_POST["password"].'\' LIMIT 0, 30 ';
    $matriz_verifica = mysql_query($sql, $conn) or die(mysql_error());
    $fila_verifica = mysql_fetch_assoc($matriz_verifica);
    if($fila_verifica["nick"] == $_POST["nick"] && $fila_verifica["password"] == $_POST["password"] ) {
       $_SESSION['nivel_acceso']= $fila_verifica["nivel_acceso"]; 
      $_SESSION['nick']= $fila_verifica["nick"]; 
      
    } 
    else {
       echo "<h1>Su contraseña o password es incorrectos<h1>";
    }
?>

salir.php

Código :

<?php
session_start();
unset($_SESSION['nivel_acceso']); 
unset($_SESSION['nick']); 
ob_start();
    header ("Location: ../../index.php"); 
ob_end_flush(); 
?>


y en cada pagina restringida colocas este codigo para validar si el usuario tiene permiso

Código :

//-- se verifica la sesion --//
session_start();
if($_SESSION['nivel_acceso']<10 && isset($_SESSION['nivel_acceso']) )
{
//acciones que suceden cuando el usuario es permitido por ejemplo incluir la conexión a la db
}
else{
// usuario denegado se le manda a paseo
ob_start();
    header ("Location: ../index.php"); 
ob_end_flush(); 
}; 
//-- /se verifica sesion --//


disculpen las tablas pero en esto no me importo (ni conocia los estandares)
además si existe algun hoyo de seguridad hagan el favor de avisar

nota de inyaka: las contraseñas se deben guardar y rescatar encriptandolas con md5, apenas tenga lista las correcciones las subo nuevamente

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA



Ultima edición por Inyaka el 21 Abr 2007 10:52 pm, editado 1 vez

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 20 Ene 2007 06:07 pm
Este sencillo script, extrae una tabla de MySQL y la imprime tal y como esta, saca el nombre de las columnas y lo pone de encabezado en la tabla y posteriormente saca todos los datos de la tabla.

Obtienes algo asi:


Código :

<?php
$host="TU_HOST";
$usuario="TU_USUARIO";
$contrasena="TU_CONTRASEÑA";
$bdd="TU_BASE_DE_DATOS";
$tabla="TU_TABLA";
mysql_connect($host,$usuario,$contrasena);
mysql_select_db($bdd);
//Rutina para sacar los encabezados de la Tabla
$result = mysql_query("SHOW COLUMNS FROM $tabla");
?>
<table border=1>
<tr>
<?php
if (mysql_num_rows($result)> 0) {
   while ($row = mysql_fetch_assoc($result)) {
      echo "<td>",$row['Field'],"</td>";
   }
}
?>
</tr>
<?php
//Rutina para sacar todos los datos contenidos en la tabla
$result2 = mysql_query("SELECT * FROM $tabla");
while ($row2 = mysql_fetch_array($result2, MYSQL_NUM)) {
echo "<tr>";
   for($i=0; $i<count($row2); $i++)
      echo "<td>",$row2[$i],"</td>";
echo "</tr>";
}
?>
</table>


Ojala les sirva ^^

Por DaHouseCat

Claber

1011 de clabLevel

2 tutoriales

Genero:Masculino  

Smarphones Fan Boy

mozilla
Citar            
MensajeEscrito el 01 Mar 2007 04:34 pm
:) Vi muchas cosas profecionales dejemos algo simple para los novatos.
Leer texto

Código :

<?php
$archivo="texto.txt";  //Direccion del archivo que leeremos
if($fp=fopen($archivo,r)) //Abrimos el archivo, en modo lectura (R) 
{
fpassthru($fp); // Si se abre correctamente, Mostraremos TODO el contenido del archivo.
}
else //si no
{
echo "Error al abrir el archivo"; // Advertimos error 
}
fclose($fp); // Cerramos el archivo.
?>

Por JaLeRu

Claber

1913 de clabLevel

7 tutoriales

Genero:Masculino  

Existo

msie
Citar            
MensajeEscrito el 21 Abr 2007 10:08 pm
Leer TEXTO respetando saltos de linea y parrafos.
leyendo el post anterior se me ocurrio una mejor forma de leer una rchivo
simpelmente reemplasen el valor de la variable $arch por su archivo y listo.

Código :

<?php
$arch = "archivo.txt";
$fp = fopen($arch, "r");
                    
while(!feof($fp)) {
 $texto = fgets($fp);
 $texto = nl2br($texto);
 echo $texto;
 }

?>

Por DarkAngel91

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 May 2007 02:54 pm
Ordenación QuickSort en PHP, procedimental y recursivo.
Recientemente me ví en la necesidad de ordenar una matriz (array) de PHP; reciclé mi código en Pascal que implementa el método de ordenación QuickSort y lo traduje a PHP.
El código que a continuación expongo es procedimental (no-OOP) y recursivo.
La función espera una matriz con índices numéricos únicamente.

Código :

function QuickSort($l,$r,&$v,$o = true) {

$i=$l;
$j=$r;

$x=$v[floor(($l+$r) / 2)];
do {
   if ($o) {
       while ($v[$i]<$x) { $i++; }
       while ($v[$j]>$x) { $j--; }
   }
   else {
       while ($v[$i]>$x) { $i++; }
       while ($v[$j]<$x) { $j--; }
   }
   if ($i<=$j) {
        $aux=$v[$i];
        $v[$i]=$v[$j];
        $v[$j]=$aux;
        $i++;
        $j--;
   } // if

} while ($i<=$j);

if ($l<$j) { QuickSort($l,$j,$v,$o); }
if ($l<$r) { QuickSort($i,$r,$v,$o); }
} // QuickSort


Explicación de parámetros de la función:
$l: la posición inical de la matriz.
$r: la posición final de la matriz.
$v: la matriz a ordenar.
$o: parámetro opcional, indica si la ordenación será ascendente (true) o descendente (false), por omisión es ascendente.
Ejemplo de uso:

Código :

/* Lleno una matriz con datos aleatorios */
$i=0;
$work=Array();
for ($i;$i<15;$i++) {
  $work[] = rand(1,15);
}

/* Ordeno la matriz */
QuickSort(0,(count($work)-1),$work);

/* Muestro el resultado */
foreach($work as $key => $value) {
 echo "<br>I: ".$key." = ".$value;
}

Saludos.

Por DriverOp

Claber

2511 de clabLevel



 

opera
Citar            
MensajeEscrito el 11 Oct 2007 08:37 pm
Bueno aca dejo mi granito de arena..!


La siguiente clase la hice con la intensión de facilitar el mostrar la fecha en una web.... la cual muestra la fecha de la siguiente manera..!

Ejemplo:
Lunes, 15 de Octubre 2007

Bueno como primer paso haremos un archivo llamado fecha.class.php con el siguiente código :

Código :

<?php 

   class fecha
   {
      var $nombre;
      var $dia; 
      var $mes;
      var $anio;
      var $dias;
      var $meses;
      var $toda;   
      
      function mostrar()
      {
         $this->nombre = date(N);
         $this->dia = date(j);
         $this->mes = date(n);
         $this->anio = date(Y);
         $this->dias = array(1=>"Lunes",2=>"Martes",3=>"Miercoles",4=>"Jueves",5=>"Viernes",6=>"Sabado",7=>"Domingo");
         $this->meses = array(1=>"Enero",2=>"Febrero",3=>"Marzo",4=>"Abril",5=>"Mayo",6=>"Junio",7=>"Julio",8=>"Agosto",9=>"Septiembre",10=>"Octubre",11=>"Noviembre",12=>"Diciembre");
         return $this->toda = $this->dias[$this->nombre].", ".$this->dia." de ".$this->meses[$this->mes]."  ".$this->anio;
      }
   }
   
?>



Ahora que ya tenemos nuestra clase.... procedemos a llamar la clase para poder mostrar la fecha.. para ello haremos otro archivo llamado mostrar_fecha.php con el siguiente código :

Código :

<?php
   
   include('class.fecha.php'); //Aca incluimos nuestra clase
   
   $display = new fecha(); // Aca creamos la instancia a la clase
   
   echo $display->mostrar();   // Y luego hacemos el llamado a la funcion para mostrar la fecha
?>



Bueno ese es mi mini-aporte posteriormente seguire aportando mas código utiles espero les sirva...!

Por jripper

228 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 09 Nov 2007 09:32 pm
+ Crear una base de datos (de preferencia con MS Acces 2003 ya que lo realicé con esta version otras versiones no tengo idea si servirá) o MS Access 2007 (recuerden: guardar como MS Access 2003) Ponganle el nombre que quieran.

+ Crear una tabla y sus campos específicos y no olviden que primero es el campo ID (autonumérico) en este caso esta tabla contendra los siguientes campos (id, nombre, apellido, empresa, correo)

::::: ALTA DE DATOS :::::
+ Creamos un archivo php con block de notas, Dreamweaver, Frontpage o lo que deseen y creamos un formulario incluyo el codigo php.

Código :

<?php

if ($enviar) {

$db = getcwd() . "\\" . 'mailinglist.mdb';

$dsn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db";

$conn = odbc_connect( $dsn, '', '' );
if (!$conn)
{
exit( "Error al conectar: " . $conn);
}

$sql = "INSERT INTO lista (nombre,apellido,empresa,correo) VALUES('$nombre','$apellido','$compania','$mail')";

$rs = odbc_exec( $conn, $sql );

if ( !$rs )
{
exit( "Error en la consulta SQL" );
}
odbc_close( $conn );

} else {
?>
<form method="post" action="formulario.php">

<p class="style2">Nombre: </p>
<p>
<input type="Text" name="nombre">
<br>
</p>
<p class="style2">Apellido:</p>
<p>
<input type="Text&quo>Apellido:<input type="Text" name="apellido">
<br>
</p>
<p class="style2">Empresa:</p>
<p>
<input type="Text" name="compania">
<br>
</p>
<p class="style2">Correo:</p>
<p>
<input type="Text" name="mail">
</p>
<p><br>

<input type="Submit" name="enviar" value="Añadir">

</p>
</form>

<?php
}
?>


Esto conecta a la base de datos siempre y cuando el servidor donde alojan permita tenga los controladores para la base de datos y conectar por medio de ODBC

::::: CONSULTA :::::



Código :

<?php

$db = getcwd() . "\\" . 'mailinglist.mdb';


$dsn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db";


$conn = odbc_connect( $dsn, '', '' );
if (!$conn)
{
exit( "Error al conectar: " . $conn);
}


$sql = "SELECT * FROM lista";


$rs = odbc_exec( $conn, $sql );

if ( !$rs )
{
exit( "Error en la consulta SQL" );
}

$i=0;

while ( odbc_fetch_row($rs) )
{
if(i==0) {
echo '<table width="800" height="50" border="1" align="center" bordercolor="#CCCCCC" bgcolor="#FFFFFF">';
}
$resultado1=odbc_result($rs,"nombre");

$resultado2=odbc_result($rs,"apellido");

$resultado3=odbc_result($rs,"empresa");

$resultado4=odbc_result($rs,"correo");
echo '<tr>
<td width="150">'.$resultado1.'</td>
<td width="150">'.$resultado2.'</td>
<td width="150">'.$resultado3.'</td>
<td width="350">'.$resultado4.'</td>
</tr>';
}

echo '</table>';

odbc_close( $conn );
?>


Aclaro este while tira todos los resultados en una tabla bien acomodadita.[/b]

Por CrASh_

21 de clabLevel



 

msie7
Citar            
MensajeEscrito el 25 Nov 2007 05:06 am
Aquí les dejo un contador de visitas únicas por chequeo IP de mi autoría. Este no requiere el uso de bases de datos MySQL y pesa tan sólo 3kb.

Creamos contador.php

Código :

<?

//este es un contador de visitas, de texto
//autor: Ian Katz
//año de creación: 2007

$expire= 86400;                // la ip expira cada X segundos
$logfile= "contador.log";       // el nombre del logfile del contador

// no modifiques lo de abajo si no sabes lo que haces!

$incpath=substr(__FILE__, 0, strrpos(__FILE__, "/")+1);
$logfile=$incpath.$logfile;
$ip= getenv('REMOTE_ADDR');
$visitas=0;
$hitmalo= false;
$hora= time();

//

$ips = array(array());
if (file_exists($logfile)){
   if ($loggedips=file($logfile)){
      $visitas=trim($loggedips[0]);
      for ($i=1; $i< count($loggedips); $i++){
         $loggedips[$i]=trim($loggedips[$i]);
         $ips[$i] = explode('||', $loggedips[$i]);
         if (($ips[$i][0]==$ip) && ($hora-$ips[$i][1]< $expire)) 
            $hitmalo= true;
      }
      
// el código de acá abajo insertará con fopen fwrite y demás, las visitas al logfile.      
      
      if ($hitmalo)
         echo $visitas;
      else{
         $visitas++;
         $fp= fopen($logfile, 'w');
         fputs($fp,"$visitas\n");
         for ($i=1; $i< count($loggedips); $i++){
            if ($hora-$ips[$i][1] < $expire)
               fputs($fp, $ips[$i][0]."||".$ips[$i][1]."\n");
         }
         fputs($fp, "$ip||$hora\n");
         fclose($fp);
         echo $visitas;         
      }
   }
}else
   echo "Falta el logfile!";

?>


Después creamos un .logfile, .log por defecto con el nombre contador.log en blanco.

Listo, tenemos un liviano script contador de visitas totalmente funcional que no usa bases de datos MySQL.

Para incluírlo en nuestra página web deberemos usar un include:

Código :

<? include('contador.php');?>


Terminamos. Les dejo el script terminado y con unos pasos simples para la instalación de WordPress. http://bitfire.7te.org/tcnologic/wp-content/uploads/2007/11/contador.zip

Por iaN-

15 de clabLevel



Genero:Masculino  

Argentina

firefox
Citar            
MensajeEscrito el 24 Ene 2008 03:14 am
Recomendar Web, con algunos errores, si me pudieran ayudar a corregirlos y que quede correcto el codigo para compartilo con todos, bueno, es asi:
esta es la forma llamada: recomienda.html

Código :

<h1>Recomienda a Crea Tu Web</h1><br />

<form name="recomendacion" action="recomienda.php" method="POST">

   Tu Nombre: <input type="text" name="n_remitente" size=40><br />

   Tu Email: <input type="text" name="e_remitente" size=40><br />

   Nombre de tu amig@: <input type="text" name="n_destinatario" size="40"><br />
   
   Email de tu amig@: <input type="text" name="e_destinatario" size="40"><br />
   
   Si deseas agrega algun mensaje a tu amig@: 
   <textarea name="sug_mensaje" cols="40" rows="6"></textarea>
   <br />

   <input type="submit" value="Recomendar">
    
   </form>

Y este es el codigo php llamado: recomienda.php

Código :

<!-- formulario de recomendación -->
<?php
   echo "<p>";
   // Primero revisamos que las variables que vienen de los formularios no se encuentren vacías
   if (empty($_POST['n_remitente']))
      echo "<b>No especifico su nombre</b><br>";
   if (empty($_POST['e_remitente']))
      echo "<b>No especifico su E - mail</b><br>";
   if (empty($_POST['n_destinatario']))
      echo "<b>No especifico el nombre de su destinatario</b><br>";
   if (empty($_POST['e_destinatario']))
      echo "<b>No especifico el E - mail de su destinatario</b><br>";
   // Luego validamos con strchr la primera ocurrencia de la arroba y el punto, es decir, validamos
   // que sea un email lo que se escribe en el campo correspondiente
   if ((!strchr($_POST['e_remitente'],"@")) || (!strchr($_POST['e_remitente'],".")))
   {   
      echo "<b>No es un correo válido</b><br>";
      if ((!strchr($_POST['e_destinatario'],"@")) || (!strchr($_POST['e_destinatario'],".")))
   {   
      echo "<b>No es un correo válido</b><br>";
      // Esta bandera se activa en false si no es un email válido
      $valida = false;
   }
   
   // Si todo sale bien   
   if ((empty($_POST['n_remitente'])) && (empty($_POST['e_remitente'])) && (empty($_POST['n_destinatario'])) && (empty($_POST['e_destinatario'])) && (empty($_POST['sug_mensaje'])) && (valida!= false))
   {
      // Creamos el header para el mensaje
      //Creamos esta variable con nuestro email del dominio
        $email= "omarin1@iespana.es";
      //indica el nombre de tu sitio
        $nombre_del_sitio = "Crea Tu Web.";
      // Sección Para:
      $to = $_POST['e_destinatario'];
      // Nombre
      $subject = $_POST['Te recomiendo esta Web'];
      // El content-Type y demás información para el mailer
      $headers = "MIME-Version: 1.0\n";
      $headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
      // El De: en la forma Nombre elcorreo@servidor.com, esto garantiza que
      // en el cliente de correo del receptor se vea sólo el nombre de quien envia
      // en su bandeja de entrada
      $headers .= "From: $_POST[n_remitente]  <$_POST[e_remitente]> \r\n";
      // Opcional: Resopnder a:
      $headers .= "Reply-To: " . $_POST['&email']; 
      // El mensaje
      $mensaje = "Hola " . $n_destinatario . ":<br>";
        $mensaje .= $n_remitente . "con email" . $e_remitente ." ,te recomienda que visites <b>" .        $nombre_del_sitio . "</b>.<br>";
        $mensaje .= "Puedes verlo en <a href='" . $url . "'>" . $url . "</a><br>" ;
      $mensaje .= "Tambien " . $n_remitente . "a anexado el mensaje: " . $sug_mensaje . " <br>";
      $mensaje .= "Gracias por todo hasta pronto. <br><br>" ;
      // Abrimos un pipe Unix para ejecutar sendmail en el servidor, el "w" es porque se abre para escritura
      $fd = popen("/usr/sbin/sendmail -t", w);
      // Metes las cabeceras del mensaje en el pipe
      fputs($fd, "To: $to\n");
      fputs($fd, "Subject: $subject\n");
      fputs($fd, "X-Mailer: PHP4\n");
      if ($headers) {
         fputs($fd, "$headers\n");
      }
      // Dejas un espacio en blanco
      fputs($fd, "\n");
      // Metes el mensaje en el pipe
      fputs($fd, $message);
      //Cierras el pipe y con ello se envia el mensaje
      pclose($fd);
      echo "<b>El mensaje se ha enviado con Exito.</b><br>Gracias por su apoyo a expandir el crecimiento de nuestra web.<br><br><br><br><br>";
   }
   echo '<a href="recomienda.hmtl">Regresar</a></p>';
?>

Bueno pues siempre que lo uso me dice que syntaxis error inesperado linea 120 $end y bueno pues la linea 120 es donde termina mi html pero no se porque no funciona bien, si lo reparan perfecto, pues a si los comparto con todos y me avisan :crap:

Hasta pronto.

Por omarin1

11 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Abr 2008 12:00 pm
Como se habrán dado cuenta, soy un usuario que hasta ahora creo que solo ha hecho 3 post y eso.. y me sentía en falta :shock: con Cristalab.. así que para remediar esto, les dejo un class que hice para diferentes usos y espero que les sirva y les agrade.

http://www.box.net/shared/919t5s56ow

Le puse RenzTools (por mi nombre :lol: ) y bueno esto es lo que hace:
- Valida Formularios
- Genera imagenes captcha
- Verifica que un archivo a subir sea una imagen "real"
- Brinda proteccion para inyecciones SQL, XSS, RFI
- Genera elementos HTML tipo Mootools

Preparando campo para usar esta clase
Colocar el siguiente código:

Código :

<?
include "element.class.php";
$rn = new RenzTools;
?>


Formas de uso

Crear elementos HTML:

Código :

<?
echo $bb->element(array('element'=>'span','text'=>'texto dentro de span','style'=>'font:12pt Georgia;'));
// Mostrará un elemento <span> con tipo de letra Georgia y con el texto: texto dentro de span


Seguridad ante los ataques XSS:

Código :

<?
// Colocar despues de iniciar la class el siguiente codigo
$rn->checkXSS();
// Esto evitará los ataques por métodos GET:
// http://midominio.com/index.php?do=<script>alert('XSS');</script>
?>


Evitando inyecciones SQL,XSS,RFI:

Código :

<?
$envio = $rn->antiSQL($_POST['envio']);
// Anti XSS más seguro que usar antiRFI
$envio = $rn->antiXSS($_POST['envio']);
$envio = $rn->antiRFI($_POST['envio']);
?>


Para crear imagenes para captcha:

Código :

<?
$rn->captcha();
// Y para comprobar la validez
// If($_SESSION['key'] == $_POST['seguro']){
// tu codigo
// }
?>


Validando tipos de cadenas de texto:

Código :

<?
$url = "http://127.0.0.1";
if($rn->validate($url,'url') == true) echo "Bien"; else echo "Mal";
// Mostrará "Mal" debido a que url reconoce direcciones de tipo http://www.hola.com
// Para que envie Bien se tendría que usar:
// if($rn->validate($url,'server') == true) echo "Bien"; else echo "Mal";
?>


Salu2

Por renzoster

11 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Jul 2009 02:59 pm

Inyaka escribió:

Sistema de usuarios

index.php (ingreso a la zona restringida y login) :

Código :

<?php
session_start();
// Mostrar error de Autentificación
require_once("../conn/conn.php");
if(isset($_POST["nick"])){
    require_once("permisos/validar.php");

};
if(isset($_SESSION["nivel_acceso"])){
     echo '
    <script language="JavaScript">
         var pagina="inicio/index.php"
         function redireccionar() 
             {  
              
                 parent.location.href=pagina
             } 
          setTimeout ("redireccionar()", 1000);
     </script>
    ';
}
else{
echo '
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> administración web</title>
<meta name="generator" content="editplus">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="description" content="">
</head>

<body bgcolor="#3399FF">
<div style="position: absolute; top:200px; left: 50px;"> 
    <form action="index.php" method="post">
        <table width="200">
        <tr>
            <td colspan="2"><font size="5" color="#FFFFCC">Esta usted entrando a una zona restringida</font></td>
         </tr>
         <tr>
            <td> Usuario:</td>
            <td>Password:</td>
         </tr>
         <tr>
            <td><input type="text" name="nick"></td>
            <td><input type="password" name="password"></td>
         </tr>
        <tr>
            <td colspan="2"><input type="submit" value="entrar"></td>
         </tr>
         </table> 
          
    </form>
</div>

</body>
</html>
';

};
?>

validar.php

Código :

<?php
session_start();
mysql_select_db($database_conn, $conn);
$sql= 'SELECT * FROM `usuarios` WHERE `nick` = \''.$_POST["nick"].'\' AND `password` = \''.$_POST["password"].'\' LIMIT 0, 30 ';
    $matriz_verifica = mysql_query($sql, $conn) or die(mysql_error());
    $fila_verifica = mysql_fetch_assoc($matriz_verifica);
    if($fila_verifica["nick"] == $_POST["nick"] && $fila_verifica["password"] == $_POST["password"] ) {
       $_SESSION['nivel_acceso']= $fila_verifica["nivel_acceso"]; 
      $_SESSION['nick']= $fila_verifica["nick"]; 
      
    } 
    else {
       echo "<h1>Su contraseña o password es incorrectos<h1>";
    }
?>

salir.php

Código :

<?php
session_start();
unset($_SESSION['nivel_acceso']); 
unset($_SESSION['nick']); 
ob_start();
    header ("Location: ../../index.php"); 
ob_end_flush(); 
?>


y en cada pagina restringida colocas este codigo para validar si el usuario tiene permiso

Código :

//-- se verifica la sesion --//
session_start();
if($_SESSION['nivel_acceso']<10 && isset($_SESSION['nivel_acceso']) )
{
//acciones que suceden cuando el usuario es permitido por ejemplo incluir la conexión a la db
}
else{
// usuario denegado se le manda a paseo
ob_start();
    header ("Location: ../index.php"); 
ob_end_flush(); 
}; 
//-- /se verifica sesion --//


disculpen las tablas pero en esto no me importo (ni conocia los estandares)
además si existe algun hoyo de seguridad hagan el favor de avisar

nota de inyaka: las contraseñas se deben guardar y rescatar encriptandolas con md5, apenas tenga lista las correcciones las subo nuevamente

-----------------------------------------------------

muy bien y para registrarse? y para deslogearse? aca estan los dos :cool:

karloncho_20 escribió:

<?php
session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','root','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('mi_base')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function formRegistro(){
?>
<form action="registrar.php" method="post">
Usuario (max 20):
<input type="text" name="username" size="20" maxlength="20" /><br />
Password (max 10):
<input type="password" name="password" size="10" maxlength="10" />
Confirma: <input type="password" name="password2" size="10" maxlength="10" /><br />
Email (max 40):
<input type="text" name="email" size="20" maxlength="40" /><br />
<input type="submit" value="Registrar" />
</form>
<?php
}
// verificamos si se han enviado ya las variables necesarias.
if (isset($_POST["username"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$password2 = $_POST["password2"];
$email = $_POST["email"];
// Hay campos en blanco
if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) {
echo "un campo está vacio.";
formRegistro();
}else{
// ¿Coinciden las contraseñas?
if($password!=$password2) {
echo "Las contraseñas no coinciden";
formRegistro();
}else{
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
$username_exist = mysql_num_rows($checkuser);
$checkemail = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
$email_exist = mysql_num_rows($checkemail);
if ($email_exist>0|$username_exist>0) {
echo "El nombre de usuario o la cuenta de correo estan ya en uso";
formRegistro();
}else{
$query = 'INSERT INTO usuarios (usuario, password, email, fecha)
VALUES (\''.$username.'\',\''.$password.'\',\''.$email.'\',\''.date("Y-m-d").'\')';
mysql_query($query) or die(mysql_error());
echo 'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />';
echo 'Ahora puede entrar ingresando su usuario y su password <br />';
?>
<FORM ACTION="validar_usuario.php" METHOD="post">
Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=10><br />
<INPUT TYPE="submit" VALUE="Ingresar">
</FORM>
<?php
}
}
}
}else{
formRegistro();
}
?>


y el deslogueo:

karloncho_20 escribió:

<?php
session_start();
// Borramos toda la sesion
session_destroy();
echo 'Ha terminado la session <p><a href="index.php">index</a></p>';
?>
<SCRIPT LANGUAGE="javascript">
location.href = "login.php";
</SCRIPT>


ejaleee! saludos!

Por karloncho_20

3 de clabLevel



 

Mi casa :B

firefox
Citar            
MensajeEscrito el 15 Dic 2009 11:42 pm
Para localizar la ip y el pais a quien le pertence: pero no creo que etre todo el codigo se llama: geoiploc

[BOFH] Eliminado. No hagas copypaste ciego de una cantidad masiva de texto sin explicación [/BOFH]

Por ferbj

1 de clabLevel



 

msie8
Citar            
MensajeEscrito el 18 Mar 2010 06:46 pm
Generacion d econtraseñas aleatorias, pasandole un tamaño de amplitud

Código PHP :

/* Llamamos a la funci�n GeneraPassword y mostramos la clave generada.*/
    //echo GeneraPassword(10);
      
    function GeneraPassword($longitud)
    {
    /* Se valida la longitud proporcionada. Debe ser n�mero y mayor de cero.
    Si es menor o igual a cero le asignamos la longitud por defecto.
    Si es mayor de 32 le asignamos 32.
    */
      $password="";
    if(!is_numeric($longitud) || $longitud <= 0)
    {
    $longitud = 8;
    }
    if($longitud > 32)
    {
    $longitud = 32;
    }

    /* Asignamos el juego de caracteres al array $caracteres para generar la contrase�a.
    Podemos añadir más caracteres para hacer más segura la contrase�a.
    */
    $caracteres = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/*%&_';

    /* Introduce la semilla del generador de n�meros aleatorios mejorado */
    mt_srand(microtime() * 1000000);

    for($i = 0; $i < $longitud; $i++)
    {
    /* Genera un valor aleatorio mejorado con mt_rand, entre 0 y el tama�o del array
    $caracteres menos 1. Poster�ormente vamos concatenando en la cadena $password
    los caracteres que se van eligiendo aleatoriamente.
    */
    $key = mt_rand(0,strlen($caracteres)-1);
    $password = $password . $caracteres{$key};
    }

    return $password;
   }

Por vicman

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Mar 2010 06:47 pm
function para devolver una direccion de email codificada, asi evitamos que sea capturada oara enviar spam

Código PHP :

function encodemail($str) {
    $mail = "";
    for ($i=0; $i<= strlen($str)-1; $i++) {
        $mail .= '&#'.ord(substr($str,$i,1)).';';
    }
    return $mail;
}

Por vicman

46 de clabLevel



 

firefox

   Página 1 de 2

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.