Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Shoutbox en OOP-PHP

Estas en el tema de Shoutbox en OOP-PHP en el foro de Frameworks y PHP orientado a objetos en Foros del Web. estoy programando un shoutbox y no estoy seguro de como debo prorgramar una serie de eventos para revisar los mensajes en php normal, el codigo ...
  #1 (permalink)  
Antiguo 19/08/2005, 19:48
 
Fecha de Ingreso: agosto-2005
Mensajes: 32
Antigüedad: 18 años, 8 meses
Puntos: 0
Shoutbox en OOP-PHP

estoy programando un shoutbox y no estoy seguro de como debo prorgramar una serie de eventos para revisar los mensajes en php normal, el codigo es algo asi:

Código PHP:
// 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
            // 4. Chechar la longitud del mensaje
            // 5. Insertar el mensaje en la db
         
        
        
if($_POST['submit']) {
            if(!
$_POST['author']) {
            echo 
'Error: No hay un nickname escrito, ese problema se resuelve generalmente escribiendo un nickname en el campo de nombre';
            die;
        }
        if(!
$_POST['message']) {
        echo 
'Error: No hay un Mensaje escrito, este problema se resuelve generalmente escribiendo un mensaje en el campo de mensaje';
        die;
        }
        
// 2. Quitar Etiquetas HTML para asegurar que nadie mande script maliciosos
            
$message strip_tags($_POST['message'], '');
            
$eml strip_tags($_POST['eml'], '');
            
$author strip_tags($_POST['author'], '');
        
        
        
// 3. Asegurar que nadie use nombres reservados si no tiene la galleta validadora
            
if($author == ("Anubis") OR ("Fenrir") OR ("WhiteSnake") AND !isset($itpshoutbox)){
            echo 
'Estas usando un Nickname Reservado, Elige Otro o Identificate';
            die;
            }
        
// 4. Checar que los mensajes no sean o muy largos o muy cortos
        
$message_length strlen($message);
        
$author_length strlen($author);
            if((
$message_length 255) AND ($message_leght 8)){
            echo 
"Error: Has introducido un mensaje Muy largo (mayor a 255 caracteres) o muy corto (Menor a 8 caracteres)";
            die;
            }
            if((
$author_length 50) AND ($message_lenght 3)){
            echo 
"Error: Has introducido un nombre o muy corto o muy largo";
            die;
            }
        
// 5. Añadir lo insterado a la db 
Este script lo he insertado tal cual dentro de una funcion y no da errores, pero tampoco funciona, he probado por separado el script que manda los datos a la db y este funciona correctamente

este es mi primer intento de prorgramar algo en php orientado a objetos

gracias por su tiempo
  #2 (permalink)  
Antiguo 22/08/2005, 07:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm .. no sé vé ningun objeto en el código que muestras o bien no estamos aplicando el mismo concepto de "objeto" .. tal vez se te olvidó poner toda tu classe completa que usas. No pongas código fuera de contexto .. si has probado a diseñar una classe bajo OOP y no te resulta, indica su código y como lo pretendes usar.

Un saludo,
  #3 (permalink)  
Antiguo 22/08/2005, 14:07
 
Fecha de Ingreso: agosto-2005
Mensajes: 32
Antigüedad: 18 años, 8 meses
Puntos: 0
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>'
;
    }

  #4 (permalink)  
Antiguo 22/08/2005, 23:24
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Y en que parte es que usas la clase ????
  #5 (permalink)  
Antiguo 25/08/2005, 16:44
 
Fecha de Ingreso: agosto-2005
Mensajes: 32
Antigüedad: 18 años, 8 meses
Puntos: 0
la uso en un script por separado, no es la misma donde se muestra, el costructor esta en otro php
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:38.