Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: RamFu en 01 de Noviembre de 2006, 13:14:19 pm

Título: Mensajes Públicos
Publicado por: RamFu en 01 de Noviembre de 2006, 13:14:19 pm
Hola, aqui les explico como hacer un script de mensajes públicos:
Componemos de 3 Archivos:
CONFIG, ENVIAR_MENSAJE y MENSAJES
config.php
<?php
// Conectamos al MYSQL

$host = "CAMBIA";
$user = "CAMBIA";
$pass = "CAMBIA";
$dbname = "CAMBIA";
$conecta = @mysql_connect($host, $user, $pass) or die("El Confih.php está mal configurado, por favor reviselo.");
@mysql_select_db($dbname, $conecta);
?>
donde pone CAMBIA, pon los datos solicitados. Hemos creado este archivo, para que se conecte al MYSQl de la tabla de Datos.
Es como el conectar.php del minichat v6
-------------------
enviar_mensaje.php
Este codigo, nos muestra un formulario de Envio del mensaje. Puede quedar una cosa asi:
Recordad que lo podéis modificar.
<?
// SCRIPT BASADO EN LOS PRIVADOS DEL MC v6
// CREADO PARA SU USO Y DISFRUTE (EN PHPEROS)

// ---------------------
// Variables que puedes modificar
$pagina = "enviar_mensaje.php"; // Nombre de ésta página


if ($env=="") {

// Sacamos la IP del usuario

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
  } 
  elseif (isset($_SERVER['HTTP_VIA'])) { 
    $ip = $_SERVER['HTTP_VIA']; 
  } 
  elseif (isset($_SERVER['REMOTE_ADDR'])) { 
    $ip = $_SERVER['REMOTE_ADDR']; 
  } 
  else { 
    $ip = "Desconocida"; 
  } 
  $fecha= date("j-m-20y"); // Sacamos la hora en formato dd-mm-y
  ?>
<div align="center">
  <p><strong>Transmisi&oacute;n de Mensaje P&uacute;blico: </strong></p>
 <form name="form1" method="post" action="<? echo $pagina; ?>?env=1">
    Nick:
    <input name="nick" type="text" id="nick">
    <br>
    Mensaje:
    <input name="mensaje" type="text" id="mensaje" size="40" maxlength="255">
  <input name="ip" type="hidden" id="ip" value="<? echo $ip; ?>">
    <input name="msm" type="hidden" id="msm" value="1">
  <input name="fecha" type="hidden" id="fecha" value="<? echo $fecha; ?>">
  <br>
  <br>
  <input type="submit" name="Submit" value="Enviar">
  </form>
  <p><strong></strong></p>
</div>
<? } else if ($env=="1") {
include ("config.php");
mysql_query("truncate table mpublico_mensajes") ; // Borramos todo el contenido de la tabla
mysql_query("insert into mpublico_mensajes (mensaje,nick,ip,fecha,msm) values ('$mensaje','$nick','$ip','$fecha','$msm')") ; // Introducimos en la tabla el contenido del formulario
}
?>


Nos muestra el formulario para enviar el mensaje. También lo podéis modificar a vuestro gusto.
---------------------------
mensajes.php
<?
include ("config.php");
$u = "1"; // Hecho a lo rápido
$resp = mysql_query("select * from mpublico_mensajes where msm='$u'") ;
$datos = mysql_fetch_array($resp) ;
$mensaje = $datos[mensaje];
$mensaje = preg_replace("/(?<!<a href=")((http|ftp)+(s)?:'[^<>s]+)/i","<a class=texto_bansms href="\0" target="_blank">\0</a>",$mensaje)' ; // hace un link con enlaces que empiezen por http://
?>
<MARQUEE onMouseOver='stop()' onMouseOut='start()' scrollamount='5' width="100%" height=10 align="middle">
<b><? echo $datos[nick]; ?></b>: <? echo $mensaje; ?>
</marquee>
Muestra los mensajes.
-------------------------
Como insertarlo en el Website?
<?php
include ('mensajes_publicos/mensajes.php);
?>
Esto: mensajes_publicos/mensajes.php lo podeis sustituir por vuestro directorio de mensajes. Si en el FTP la carpeta se llama mis_mensajes, pondremos:
<?php
include ('mis_mensajes/mensajes.php);
?>

Codigo SQL para crear la base de datos en mysql:
Título: Re: Mensajes Públicos
Publicado por: Raken en 01 de Noviembre de 2006, 14:54:18 pm
Esto NO es un tutorial ¬¬
Título: Re: Mensajes Públicos
Publicado por: RamFu en 01 de Noviembre de 2006, 15:34:29 pm
El codigo SQL es:

CREATE TABLE `mpublico_mensajes` (
  `mensaje` varchar(255) NOT NULL default '',
  `nick` varchar(40) NOT NULL default '',
  `fecha` varchar(20) NOT NULL default '',
  `ip` varchar(20) NOT NULL default '',
  `msm` varchar(12) NOT NULL default ''
) TYPE=MyISAM COMMENT='Tabla para el sistema de mensajes publicos';
Título: Re: Mensajes Públicos
Publicado por: Drek en 01 de Noviembre de 2006, 15:43:43 pm
me da error en el mensajes.php es esto mira :

http://www.radiogoods.webspacemania.com/mpublico_mensajes/mensajes.php

entra i dime
Título: Re: Mensajes Públicos
Publicado por: Raken en 01 de Noviembre de 2006, 16:06:27 pm
Citar
$fecha= date("j-m-20y"); // Sacamos la hora en formato dd-mm-y

Esa fecha no está en formato dd-mm-y  (ej. 08-11-06)

Ese formato se consigue asi:   date("d-m-y");

La "j" pone el día sin cero delante (ej. 8-11-06)

Y en el año, pones 20 delante... lo cual si "y" equivale a 06, el resultado es 2006. No hace falta ser tan cutres. Se puede poner una Y mayúscula, y te representa el año en 4 cifras. date ("d-m-Y"); (ej. 08-11-2006)


www.php.net/date
Título: Re: Mensajes Públicos
Publicado por: CarlosRdrz en 01 de Noviembre de 2006, 16:18:37 pm
Esto no tiene ni pies ni cabeza :S

if ($env=="") {
¿Que queres hacer con eso?

<? } else if ($env=="1") {
include ("config.php");
mysql_query("truncate table mpublico_mensajes") ; // Borramos todo el contenido de la tabla
mysql_query("insert into mpublico_mensajes (mensaje,nick,ip,fecha,msm) values ('$mensaje','$nick','$ip','$fecha','$msm')") ; // Introducimos en la tabla el contenido del formulario
}
?>


No entiendo nada... ;S

Salu2!
Título: Re: Mensajes Públicos
Publicado por: RamFu en 01 de Noviembre de 2006, 16:37:22 pm
El limite de mensajes a enviar. 1
Título: Re: Mensajes Públicos
Publicado por: Drek en 01 de Noviembre de 2006, 16:45:47 pm
bueno.. pero ami me ayudais o no
Título: Re: Mensajes Públicos
Publicado por: RamFu en 01 de Noviembre de 2006, 21:59:13 pm
<?
// El codigo siguiente, muestra los Mensajes

include ("config.php");
$u = "1";
$resp = mysql_query("select * from mpublico_mensajes where msm='$u'") ;
$datos = mysql_fetch_array($resp) ;
$mensaje = $datos[mensaje];
$mensaje = preg_replace("/(?<!<a href=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i","<a class=texto_bansms href=\"\\0\" target=\"_blank\">\\0</a>",$mensaje) ;
?>
<MARQUEE onMouseOver='stop()' onMouseOut='start()' scrollamount='5' width="100%" height=10 align="middle">
<b><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $datos[nick]; ?></font></b><font size="1" face="Verdana, Arial, Helvetica, sans-serif">:
<? echo $mensaje; ?> </font>
</marquee>
Prueba ese a ver
Título: Re: Mensajes Públicos
Publicado por: Pc-Admin en 02 de Noviembre de 2006, 14:04:47 pm
Ramfu amigo mio, te corrijo ;);)
Tu script simplemente lo que hace es mostrar un mensage, asi que te doy una solucion mejor :P:P.

Atento:


<?
@include("config.php"); //incluimos config

//seleccionamos los mensages de la db cn la id descendiente
$query = mysql_query("SELECT * FROM `mpublico_mensajes` Order by id DESC");
//creamos el marquee ahora
echo "<marquee onmouseover='this.stop()' onmouseout='this.start()'>";

//recojemos todos los mensages y mostramos....
while($ver = @mysql_fetch_array($query)) {
//comprovamos variables i las mostramos
$nick = $ver['nick'];
echo "<b>".$nick."</b>";
echo ": ".$ver['mensaje'];
//espacio que quedara entre mensage y mensage
echo "    ||          ";
} //cerramos el while
//cerramos marquee
echo "</marquee>";
?>

Con este codigo, lo que aremos es mostrar todos los mensajes publicos que la gente envia sin necesidad de ir borrando uno para mostrar el otro ;);).

Título: Re: Mensajes Públicos
Publicado por: RamFu en 02 de Noviembre de 2006, 17:54:03 pm
Ok, pero yo puse el de 1, porque si alguien mandaba un mensaje inapropiado, se borrara con el siguiente  ;)
Título: Re: Mensajes Públicos
Publicado por: naveda en 02 de Noviembre de 2006, 19:13:06 pm
Cierro el tema, aunque debería borrarlo, porque incumple una norma basica. Explicar los CODIGOS no POSTEARLOS SIMPLEMENTE.

;) algun dia no tendré ke repetirlo :P