Domain Discussion Board

Go Back   Domain Discussion Board > Foreign Language Section > Spanish Forum - Foro en Español > Tecnologia Web General

 
Reply
 
LinkBack Thread Tools Display Modes
Codigo Php:Formulario de contacto php y msql
Old
  (#1 (permalink))
javitor52x
Junior Member
javitor52x is on a distinguished road
 
Status: Offline
Posts: 31
Points: 423.9
Bank: 0.0
Total Points: 423.9
Donate
Join Date: Jun 2006
Rep Power: 0
Codigo Php:Formulario de contacto php y msql - 06-08-2006, 09:17 AM

Bueno este script es un sistema de contacto que he hecho unicamente con el fin de adquirir nuevos conocimientos de PHP y MySQL.

El script funciona sin la funcion mail(), en cambio utiliza base de datos esta en una soluion a los que quieran tener un sistema de contacto pero sus hosting (generalmente gratuitos) han desabilitado esta funcion ('mail()').

Consta de 3 archivos:

Contacto.php
Archivo que incluye el formulario de contacto y ademas introduce los datos de este en la base de datos.

Mensajes.php
Archivo que contiene el panel de administracion de los mensajes (ver, borrar) esta protegido con contraseña mediante HTTP pero es problema de ustedes si quieres protegerlo de otra manera.

func.php
Este archivo contiene algunas funciones que son utilizadas.

Bueno empezemos con el codigo:

Creamos un Archivo llamado config.php y ponemos lo siquiente

Quote:
<?php
unset($config) ;
$config[1] = 'localhost' ; # Puede ser "localhost" aunque también una URL o una IP
$config[2] = 'root' ; # Usuario de la base de datos
$config[3] = '' ; # Contraseña de la base de datos
$config[4] = 'uno' ; # Nombre de la base de datos

$conectar = @mysql_connect($config[1],$config[2],$config[3]) or exit('Datos de conexión incorrectos.') ;
mysql_select_db($config[4],$conectar) or exit('No existe la base de datos.') ;

# DEFINE UN USUARIO Y UNA CONTRASEÑA PARA ENTRAR A ADMINISTAR LOS MENSAJES.
$usuario= "usuario"; // USUARIO PARA ENTRAR A ADMINISTAR LOS MENSAJES
$password= "pass"; // UN PASSWORD (CONTRASEÑA)

?>
Seguidamente creamos otro archivo llamado contacto.php
y ponemos lo siguiente:

Quote:
<html>
<head>
<title>Formulario de contacto</title>

</head>
<body alink="336699" link="336699" vlink="336699">
<STYLE TYPE="text/css">
a:link {text-decoration: none}
a:visited {text-decoration: none}
a:active {text-decoration: none}
a:hover {text-decoration: underline}
</STYLE>
<?
/////////////////////////////////////////////////////
////// Por Favor No Borre los creditos ////////
////// By Javi ////////
////// Www.mansionanime.info ////////
////// ////////
////////////////////////////////////////////////////
# SI NO SE HA PULSADO ENVIAR SE MUESTRA EL FORMULARIO
if(!isset($enviar))
{
?>
<script languaje="javascript">
function contar(form)

{
n = form.texto.value.length;
t = 200;
{
form.escritos.value = n;
form.restantes.value = (t-n);
}
}
function maximo(form) {
var max=200;
if (form.texto.value.length > max) {
alert("Tu mensaje sobrepasa el numero de caracteres admitidos.Reducelo por favor!");
return false;
}
else return true;
}
</script>

<form action="contacto.php" method="post" onsubmit="return maximo(this)">
<table border="0" align="center">
<tr>
<td colspan="2"><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Contacto</font></div></td>
</tr>
<tr>
<td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Nombre :</font></strong></div></td>
<td><input name="nombre" id="nombre" class="campos" type="text" maxlength="20" >&nbsp;</td>
</tr>
<tr>
<td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">E-Mail:</font></strong></div></td>
<td><input name="email" id="email" class="campos" type="text" maxlength="40">&nbsp;</td>
</tr>
<tr>
<td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Asunto:</font></strong></div></td>
<td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> <em>
<input name="asunto" id="asunto" class="campos"type="text" maxlength="25">
&nbsp;</em></font></div></td>
</tr>
<tr>
<td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Mensaje:</font></strong></div></td>
<td rowspan="2"><textarea name="texto" id="texto" class="textok" cols="50" rows="15" onKeyUp="contar(this.form)"></textarea>
<br>
<font face="arial" size="2">Escritos: </font><input type="text" ReadOnly name="escritos" size="2" value="0">
<font face="arial" size="2">Restantes: </font><input type="text" ReadOnly name="restantes" size="2" value="200">
&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><br><br>&nbsp;</td>
<td><input type="submit" id="enviar" class="botones" name="enviar" value="Enviar">
<input type="reset" id="borrar" class="botones" name="borrar" value="Borrar"></td>
</tr>
</table>
<?
}
#SI YA SE PULSO ENVIAR SE PROCESA EL FORMULARIO
else
{
include("func.php");//INCLUYO EL ARCHIVO CON LAS FUNCIONES
if(trim($_POST["nombre"]) != "" && trim($_POST["email"]) != "" && trim($_POST["asunto"]) != "" && trim($_POST["texto"]) != ""){
$email = $_POST["email"] ;
# COMPROVAMOS QUE EL EMAIL INTRODUCIDO SEA VALIDO
if(!eregi("[0-9a-z_\-]+@[0-9a-z\-\.]+\.[a-z]{2,3}",$email)) {
echo "<center><font face=Verdana size=1><b>El email que has introducido <font face=Verdana size=1 color=336699>$email</font> no es valido.<br><a href=javascript:history.go(-1)>Volver</a>.</b></font></center>";
}
else {
include("config.php"); // SE INCLUYE EL ARCHIVO DE CONEXION
$nuevo= 0;
$nombre= $_POST["nombre"]; // TOMAMOS EL NOMBRE DEL FORMULARIO.
$email= $_POST["email"]; // TOMAMOS EL EMAIL DEL FORMULARIO.(YA COMPROVADO)
$ip= obtener_ip(); // OBTENEMOS LA IP DEL REMITENTE
$asunto= $_POST["asunto"]; // TOMAMOS EL ASUNTO DEL FORMULARIO.
$mensaje= $_POST["texto"]; // TOMAMOS EL MENSAJE DEL FORMULARIO.
$fecha= date("d-m-Y"); // SE TOMA LA FECHA
$cliks= 0;
$sql = mysql_query("insert into contacto (nuevo, nombre, email, ip, asunto, mensaje, fecha, cliks) values ('$nuevo', '$nombre','$email','$ip','$asunto','$mensaje', '$fecha', '$cliks')")
or exit("<center><font face=Verdana size=1><b>A ocurrido un error al introducir los datos en la DB.</b></font></center>");
echo "<center><font face=Verdana size=1><b>Mensaje enviado correctamente. TU ip: <font face=Verdana size=1 color=336699>$ip</font> a sido guadada.</b></font></center>";
}
}
else
{
echo "<center><font face=Verdana size=1><b>Todos los campos son obligatorios.<br><a href=javascript:history.go(-1)>Volver</a>.</b></font></center>";
}
}

?>
Despues creamos otro archivop llamado func.php
y ponemos lo siquiente
Quote:
<?php
/////////////////////////////////////////////////////
////// Por Favor No Borre los creditos ////////
////// By Javi ////////
////// Www.mansionanime.info ////////
////// ////////
////////////////////////////////////////////////////
/* DEFINIMOS ALGUNAS FUNCINES QUE MAS ADELANTE VAN A SER USADAS */

# FUNCION PARA OBTENER LA DIRECCION IP DE LOS USUARIOS
function obtener_ip() {
global $HTTP_SERVER_VARS;
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != "") {
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}else{ $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; }
return($ip);
}

# FUNCION PDAR FORMATO A LOS MENSAJES RECIVIDOS.
function quitar($texto) {

// Quita los espacios al principio y al final
$texto = trim($texto);

// Esta función intenta eliminar todas las etiquetas HTML y PHP de la cadena dada. (Quitar los // si queremos desactivar el html)
$texto = strip_tags($texto);

// Convierte el texto en html con sus etiquetas
$texto = htmlspecialchars($texto);

// convierte las ' " ' en ' " ' para que no den problemas con mysql
$texto = addslashes($texto);

// Reemplaza los saltos de linea por <br>
$texto = nl2br($texto);

return $texto ;
}


?>
Y por Ultimo creamos un archivo llamado mensajes.php
y ponemos lo siguiente
Quote:
<?php
/////////////////////////////////////////////////////
////// Por Favor No Borre los creditos ////////
////// By Javi ////////
////// Www.mansionanime.info ////////
////// ////////
////////////////////////////////////////////////////

include("config.php"); // INCLUIMOS EL ARCHIVO PARA CONECTARNOS A LA BD.
# AUTORIZACION PARA ENTAR A LA ZONA DE ADMINISTRACION DE LOS MENSAJES
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}


if (($PHP_AUTH_USER==$usuario) && ($PHP_AUTH_PW==chop($password))){ $validado=true;
$i++;
}

if (!$validado) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
?>
<html>
<head>
<title>Mensajes recividos.</title>
</head>
<div align="right">
<font size="1" face="arial">Bienvenido <font color="blue"><?php echo $PHP_AUTH_USER?></font> a tu panel de mensajes.</font>
</div><br><br>

<!-- CSS PARA TRATAR A LOS LIKS -->

<STYLE TYPE="text/css">
a:link {text-decoration: none}
a:visited {text-decoration: none}
a:active {text-decoration: none}
a:hover {text-decoration: underline}
</STYLE>

<!-- --------------------------- -->
<?


# SI NOS PIDEN BORRAR. BORRAMOS jejeje xD. QUEDARIA ASI 'mensajes?borrar=ID'
if($_GET["borrar"])
{
?>
<body alink="336699" vlink="336699" link="336699"><?
$borrar= $_GET["borrar"];
mysql_query("delete from contacto where id=$borrar limit 1");
echo "<center><font face=Verdana size=1 color=red><b>Mensaje borrado correctamente<br>Haz click <a href='mensajes.php'>aqui</a> para regresar.</b></font></center>";
}
else
{
if($_GET["id"])
{
?>
<body alink="336699" vlink="336699" link="336699">
<?

# SI NOS PIDEN VER. 'mensajes.php?id=ID'
$ver= $_GET["id"];

$sql = mysql_query("select * from contacto where id=$ver");
$contacto = mysql_fetch_array($sql);
# SI EL MENSAJE QUE SE VA A MOSTRAR ES NUEVO(nuevo=0) SE LE CAMBIA (nuevo=1) EL VALOR PARA QUE YA NO SE TOME COMO TAL
if($contacto[nuevo] == 0){
$nuevoborrar= mysql_query("update contacto set nuevo=1 where id=$ver");
}
# SE LE SUMA UNA VISITA AL MENSAJE
$sumar= $contacto["cliks"] + 1;
$upd= mysql_query("update contacto set cliks=$sumar where id=$ver");
# SI LA ID DEL MENSAJE NO SE ENCUENTRA SE MUESTRA UN ERROR
if($contacto == ""){
echo "<center><font face=Verdana size=1><b>El mensaje no existe en la base de datos.<br>Haz click <a href='mensajes.php'>aqui</a> para regresar.</b></font></center>";
}else{
include("func.php");//INCLUIMOS EL ARCHIVO QUE CONTIENE LAS FUNCIONES

# LE DAMOS PRESENTACION AL MENSAJE
?>
<table align="center" border="0" width="80%">
<tr>
<td bgcolor="#663333">
<table border="0" bgcolor="#663333" width="100%">
<tr>
<td width="70%"><center><font face="Verdana" size="3" color="ffffff"><b><? echo $contacto[asunto]; ?></b></font></center></td>
<td width="20%" align="right"><font face="Verdana" color="ffffff" size="1"><b>Fecha: <? echo $contacto[fecha]; ?></b></font></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><br><font face="Verdana" size="1"><b><? echo quitar($contacto[mensaje]); ?></b></font><br><br></td>
</tr>
<tr>
<td bgcolor="#969696">
<table width="90%" align="center" border="0" summary="">
<tr>
<td bgcolor="#969696" width="10%"><div align="left"><font face="Verdana" size="2"><b><a href="mensajes.php">Volver</a></b></div></td>
<td bgcolor="#969696" width="15%"><font face="Verdana" size="1" color="ffffff"><b>Enviado por: <? echo $contacto[nombre]; ?></b></font></td>
<td bgcolor="#969696" width="25%"><font face="Verdana" size="1" color="ffffff"><b>IP del remitente: <? echo $contacto[ip]; ?></b></font></td>
<td bgcolor="#969696" width="10%"><div align="right"><font face="Verdana" size="2"><b><a href="mensajes?borrar=<?=$contacto[id]?>">Borrar</a></b></div></td>
</tr>
</table>
</td>
</tr>
</table>

<?
}
}
else{
// MOSTRAMOS LOS MENSAJES RECIVIDOS
# SELECCIONAMOS LOS MENSAJES NUEVOS Y.....
$nuevos = mysql_query("select * from contacto where nuevo=0");
# LOS CONTAMOS
$contarnuevos= mysql_num_rows($nuevos);
# RECIVIMOS TODOS LOS MENSAJES Y LOS ORDENAMOS DE MANERA DECENDENTE Y....
$sql = mysql_query("select * from contacto order by id desc");
# LOS CONTAMOS
$contar= mysql_num_rows($sql);
?>
<body alink="ffffff" vlink="ffffff" link="ffffff">
<font face="arial" size="6" color="#663333"><center><b>MENSAJES RECIVIDOS</b></center></font>
<table width="46%" align="center" bgcolor="#663333" border="0" cellspacing="0" cellpading="0">
<tr>
<td align="center"><font face="arial" color="ffffff" size="1">Mensajes Nuevos: <?=$contarnuevos?></font></b></td>
<td align="center"><font face="arial" color="ffffff" size="1">Total de Mensajes: <b><?=$contar?></b></font></td>
</tr>
</table><br><br>
<?
# SI NO HAY MENSAJES INFORMAMOS
if($contar == 0){
echo "<center><font face=Verdana size=1><b>No hay mensajes recividos</b></font></center>";
}
else
{
while($contacto = mysql_fetch_array($sql))
{
$id=$contacto["id"];
# LE DAMOS PRESENTACION A LOS MENSAJES ACOMODANDOLOS EN UNA TABLA.
?>
<body alink="FFFFFF" vlink="FFFFFF" link="FFFFFF">
<table align="center">
<tr>
<td width="70%" bgcolor="#663333"><div align="rigth"><font face=Verdana size=2 color="FFFFFF"><b>Remitente: </b> <a href=mailto:<?=$contacto['email']?>><?=$contacto['nombre']?></a></font></div></td>

<td width="80%" bgcolor="#663333"><div align="left"><font face=Verdana size=1 color="ffffff"><b>IP del remitente:</b><?=$contacto[ip]?></font></div></td>
</tr>
<tr>
<td width="70%"><font face=Verdana size=1><b>Asunto:</b> <?=$contacto[asunto]?></font></td>
<td><font face="arial" size="-1">ID de la noticia: <b><?=$id?></b></font></td>
</tr>
<tr>
<td width="70%" bgcolor="#969696">
<table border="0" summary="">
<tr>
<td width="60%"><a href="mensajes.php?id=<?=$id?>"><font face="verdana" size="1"><b>Ver Mas...</b></font></a></td>
<td><center><font color="ffffff" face="verdana" size="1"><b>Visitado <b><?=$contacto["cliks"]?></b> veces</b></center></td>
</tr>
</table>
</td>
<td width="70%" bgcolor="#969696">
<a href="mensajes.php?borrar=<?=$id?>"><font face="verdana" size="1"><b>Borrar</b></font></a>
</td>
</tr>
<tr>
</table><hr color="#663333" width="50%"><br>
<?
}
}
}
}
?>
asta qui es el codigo del sistema ahora solo nos falta conectarnos con la base de datos para ello hacemos lo siguiente creamos un archivo llamado
contacto.sql y ponemos lo siquiente:ç

Quote:
CREATE TABLE contacto (
id INT(44) NOT NULL auto_increment,
nuevo BIGINT( 1 ) NOT NULL,
nombre VARCHAR(255),
email VARCHAR(255),
ip VARCHAR(255),
asunto VARCHAR(255),
mensaje LONGTEXT,
fecha VARCHAR( 20 ) NOT NULL,
cliks VARCHAR( 5 ) NOT NULL,
PRIMARY KEY (id)
)
----------------------------------------------------------
FORMULARIO DE CONTACTO HECHO POR Javitor52x
CON AYUDA DE LOS FOROS PHP QUE VI POR LA RED Y CON MUCHOS TUTOS ----------------------------------------------------------

INSTRICCIONES:
--------------------------------
1.- Modifica el archivo config.php
2.- Crea las tablas desde el phpmy admin con el codigo
del archivo contacto.sql
3.- Sube los archivos al servidor.

Espero qu eles sirva de alluda este tutorial si necesitan alluda o cualquier cosa no duden en preguntarmelo saludos
   
Reply With Quote
Re: Codigo Php:Formulario de contacto php y msql
Old
  (#2 (permalink))
Takayuki
Executive Member
Takayuki is an unknown quantity at this point
 
Takayuki's Avatar
 
Status: Offline
Posts: 258
Points: 561.4
Bank: 2.0
Total Points: 563.4
Donate
Join Date: Jun 2006
Location: México
Rep Power: 0
Re: Codigo Php:Formulario de contacto php y msql - 06-08-2006, 07:34 PM

Buen Script, este es de los mas utiles
   
Reply With Quote
Sponsored Links
Re: Codigo Php:Formulario de contacto php y msql
Old
  (#3 (permalink))
Shaoran
Executive Member
Shaoran is on a distinguished road
 
Shaoran's Avatar
 
Status: Offline
Posts: 482
Points: 0.0
Bank: 12,168.5
Total Points: 12,168.5
Donate
Join Date: Jun 2006
Rep Power: 3
Re: Codigo Php:Formulario de contacto php y msql - 06-08-2006, 07:56 PM

Yo Teno Un muy buen FOrmulario de envio ke te envia directo al email Es Muy bueno buscare el script y lo pondre para ke lo utilizen
   
Reply With Quote
Re: Codigo Php:Formulario de contacto php y msql
Old
  (#4 (permalink))
javitor52x
Junior Member
javitor52x is on a distinguished road
 
Status: Offline
Posts: 31
Points: 423.9
Bank: 0.0
Total Points: 423.9
Donate
Join Date: Jun 2006
Rep Power: 0
Re: Codigo Php:Formulario de contacto php y msql - 06-08-2006, 08:22 PM

ya pero de lo que se trata esque muchos host tiene desactivada esa funcion ademas yo creo que esto es mejor qu ete lo manden al email y aqu esto lo controlas todo desde internet si quieres ponco el otro script que lo tengo pero no vale para nada saludos
   
Reply With Quote
Re: Codigo Php:Formulario de contacto php y msql
Old
  (#5 (permalink))
Shaoran
Executive Member
Shaoran is on a distinguished road
 
Shaoran's Avatar
 
Status: Offline
Posts: 482
Points: 0.0
Bank: 12,168.5
Total Points: 12,168.5
Donate
Join Date: Jun 2006
Rep Power: 3
Re: Codigo Php:Formulario de contacto php y msql - 06-08-2006, 08:28 PM

no pero el formulari es bueno ya que no ocupa Mysql
solo pones un codigo en tu pagina
y otro archivo lo dejas en cualkier carpeta y te lo envia rapidamente O.o
me funciona muy bien lo he ocupado en artos host y no hay problema
alguno
   
Reply With Quote
Re: Codigo Php:Formulario de contacto php y msql
Old
  (#6 (permalink))
javitor52x
Junior Member
javitor52x is on a distinguished road
 
Status: Offline
Posts: 31
Points: 423.9
Bank: 0.0
Total Points: 423.9
Donate
Join Date: Jun 2006
Rep Power: 0
Re: Codigo Php:Formulario de contacto php y msql - 06-09-2006, 07:46 AM

y tiene seguridad ese sistema de contacto que tienes tu o no por que si no tiene cualquiera que tecle la ruta se mete dame la url del sistema si puedes saludos
   
Reply With Quote
Re: Codigo Php:Formulario de contacto php y msql
Old
  (#7 (permalink))
Shaoran
Executive Member
Shaoran is on a distinguished road
 
Shaoran's Avatar
 
Status: Offline
Posts: 482
Points: 0.0
Bank: 12,168.5
Total Points: 12,168.5
Donate
Join Date: Jun 2006
Rep Power: 3
Re: Codigo Php:Formulario de contacto php y msql - 06-09-2006, 10:44 AM

Espera En una rato envio el Codigo y te dejo la web para ke lo veas
   
Reply With Quote
Re: Codigo Php:Formulario de contacto php y msql
Old
  (#8 (permalink))
Shaoran
Executive Member
Shaoran is on a distinguished road
 
Shaoran's Avatar
 
Status: Offline
Posts: 482
Points: 0.0
Bank: 12,168.5
Total Points: 12,168.5
Donate
Join Date: Jun 2006
Rep Power: 3
Re: Codigo Php:Formulario de contacto php y msql - 06-09-2006, 10:45 AM

(envio) kize decir dejo el codigo para todos
   
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Points Per Thread View: 0.1
Points Per Thread: 0
Points Per Reply: 5.0


Similar Threads
Thread Thread Starter Forum Replies Last Post
Codigo PHP: Secciones sólo para registrados Hades Tecnologia Web General 3 06-18-2006 04:08 PM
Codigo Php: Como Imprimir javitor52x Tecnologia Web General 2 06-08-2006 08:11 PM


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.0.0 ©2007, Crawlability, Inc.