0k, aqui todo el script y escrito mucho mejor que la otra vez
Código PHP:
class shoutbox {
// Configuracion de la db
var $db_host = "localhost"; // hostname mySQL
var $db_user = "username"; // username en mySQL
var $db_password = "password"; // password en mySQL
var $db_name = "database_name"; // nombre de la db mySQL
// Cuando se hace un Shout, debemos :
// 1. Validar que se haya escrito Algo
// 2. Quitar Etiquetas HTML extrañas
// 3. Asegurar que nadie este usando un nickname reservado y que solo podra ser usado si se coenta con una cookie que autorze el uso de nick reservados
// 4. Chechar la longitud del mensaje
// 5. Insertar el mensaje en la db
function mainshoutbox (){
$this->author = $_POST['author'];
$this->eml = $_POST['eml'];
$this->message = $_POST['message'];
if($_POST['submit']) {
if(!$this->author) {
echo 'Error: No hay un nickname escrito, ese problema se resuelve generalmente escribiendo un nickname en el campo de nombre';
die;
}
if(!$this->message) {
echo 'Error: No hay un Mensaje escrito, este problema se resuelve generalmente escribiendo un mensaje en el campo de mensaje';
die;
}
//3. Asegurar que nadie use nombres reservados si no tiene la galleta validadora
if($this->author == ("Anubis") OR ("anubis") OR ("WhiteSnake") AND !isset($itpshoutbox)){
echo 'Estas usando un Nickname Reservado, Elige Otro u obten la cookie identificadora';
die;
}
// 2. Quitar Etiquetas HTML que puedan ser maliciosas
$this -> messagesecure = strip_tags($this->message, '');
$this -> emlsecure = strip_tags($this->eml, '');
$this -> authorsecure = strip_tags($this->author, '');
// 4. Checar que los mensajes no sean o muy largos o muy cortos
$this -> message_length = strlen($this -> messagesecure);
$this -> author_length = strlen($this -> author);
if(($this -> message_length > 300) AND ($this -> message_leght < 8)){
echo "Error: Has introducido un mensaje Muy largo (mayor a 300 caracteres) o muy corto (Menor a 8 caracteres)";
die;
}
if(($this -> author_length > 20) AND ($this -> message_lenght < 3)){
echo "Error: Has introducido un nickname o muy corto o muy largo; tu nickname debe ser mayor de 3 caracteres y menor a 20";
die;
}
// 5. Añadir lo insterado a la db
// Si el prorgama no ha muerto por ningun tipo de error, aqui inserta todo a la db
// Conectando a la db.
mysql_connect($this -> db_host, $this -> db_user,$this -> db_password) or die(mysql_error());
// Elegir la db.
mysql_select_db($this -> db_name) or die(mysql_error());
// Definiendo el formato de insercion de fecha
$date = date("d / m /@ H:i A");
// Crear la query para mandarla
mysql_query("INSERT INTO shoutbox (message, author, eml, date, ip) VALUES ('$message', '$author', '$eml', '$date', '$_SERVER[REMOTE_ADDR]')");
mysql_close();
// Dar las Gracias por postear
echo 'Gracias por tu mensaje<BR>';
// Si no se ha hecho ningun Shout entonces:
// 1. Hay que Mostrar los shouts
// 2. Mostrar el formulario de post en otra funcion
} else {
// 1. Mostrar los ultimos shouts
mysql_connect($this ->db_host,$this -> db_user,$this -> db_password) or die(mysql_error());
// Elegir la db.
mysql_select_db($this -> db_name) or die(mysql_error());
// correr el query que muestre los ultimos 10 shouts
$this -> query = "SELECT message, author, eml, date FROM shoutbox order by id DESC LIMIT 10";
$this -> result = mysql_query($this -> query);
echo "<TABLE>";
while($r=mysql_fetch_array($this -> result))
{
// Tabla :
echo "<TR>
<TD><font size='2'>
Mensaje $r[date] por <A HREF='mailto:$r[eml]'>
$r[author]</A></font></TD>
</TR>
<TR>
<TD><font size='3'>$r[message]</font></TD>
</TR>
<TR>
<TD><HR></TD>
</TR>";
}
echo "</TABLE>";
}
}
function insertshout(){
echo'
<FORM METHOD=POST ACTION="'.$PHP_SELF.'">
<TABLE>
<TR>
<TD>Nick :</TD>
<TD><INPUT TYPE="text" NAME="author"></TD>
</TR>
<TR>
<TD>Email :</TD>
<TD><INPUT TYPE="text" NAME="eml"></TD>
</TR>
<TR>
<TD>Mensaje :</TD>
<TD><INPUT TYPE="text" NAME="message"></TD>
</TR>
<TR>
<TD> </TD>
<TD><INPUT TYPE="submit" name="Enviar" value="post"></TD>
</TR>
</TABLE>
</FORM>';
}
}