
03/02/2006, 16:47
|
 | | | Fecha de Ingreso: febrero-2003 Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 22 años, 1 mes Puntos: 5 | |
tag.php Código PHP: <?php ob_start(); # Esta función habilitará el uso de búferes de salida. Mientras los búferes de salida están activos no se envía salida # Desde el script (más que las cabeceras), en su lugar la salida es almacenada en un búfer interno. (www.php.net) # Osea por lo que se entiende, no se envia nada al navegador hasta que aparezca algo como ob_end_flush()--mira al final. include ("config.php"); if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {// SI NO ESTA VACIO INDICA QUE SE HA USADO UN PROXY $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; // } // elseif (isset($_SERVER['HTTP_VIA'])) { // NO TENGO INFO AL RESPECTO. A VER SI ALGUIEN HECHA UNA MANO PARA $ip = $_SERVER['HTTP_VIA']; // APRENDER TODOS... } // elseif (isset($_SERVER['REMOTE_ADDR'])) { // ALMACENA LA DIRECCION IP DEL VISITANTE EN $ip = $_SERVER['REMOTE_ADDR']; // CASO DE NO HABERSE USADO PROXY } // else { // $ip = "Desconocida"; // } $nick = $HTTP_POST_VARS['nick']; //CUAL ES SU NICK? LO ALMACENAMOS EN UNA VARIABLE $msg = $HTTP_POST_VARS['msg']; // ALMACENAMOS EL MENSAJE LO ALMACENAMOS EN OTRA VARIABLE // LA LINEA QUE SIGUE VA A COMPROBAR CON isset() QUE LA VARIABLE $nick Y $msg ESTA DEFINIDA // ADEMAS VA A COMPROBAR QUE NO VENGAN VACIAS NINGUNA DE LAS DOS VARIABLES // Y QUE NO TENGAN LOS VALORES QUE SE MUESTRAN POR DEFECTO LOS CUADROS DE TEXTO. // SI SE CUMPLEN ESTOS REQUISITOS, ENTONCES EJECUTAMOS EL CODIGO DE ABAJO. if (isset($nick)&&isset($msg)&&($nick!="")&&($msg!="")&&($nick!="Tu Nick")&&($msg!="Tu Mensaje")){ $msg = str_replace (":||:", " ", $msg); // REEMPLAZAMOS TODAS LAS OCURRENCIAS DE :||: POR " " en el mensaje ($msg). $fecha = getdate(); // OBTENEMOS LA FECHA PERO NO VEO DONDE LA UTILIZA $time = getdate (time()); // OBTENEMOS LA HORA, TAMPOCO VEO QUE LA USE. $uusi=":||:$nick:||:$msg:||:$ip:||:\n"; // CONCATENAMOS EL NICK, MENSAJE Y LA IP EN UNA SOLA VARIABLE $fp = fopen($archivo, "r+"); // ABRIMOS EL FICHERO $archivo(tag.txt) EN MODO LECTURA Y ESCRITURA $vanha = fread($fp, filesize($archivo)); // LEO TODO EL ARCHIVO. filesize() me da el tamaño de un determinado fichero // y fread() me permite leer un determinado fichero con la opcion de indicarle cuanto queremos leer (en bytes) // de esta manera leemos todo el fichero tag.txt y almacenamos su contenido en una nueva variable. fseek($fp, 0); // NOS POSICIONAMOS AL PRINCIPIO DEL FICHERO ;) fputs($fp, "${uusi}${vanha}"); // ACA AGREGAMOS LA VARIABLE $uusi(usuario + mensaje + ip) AL FICHERO fclose($fp); // CERRAMOS EL FICHERO echo "<center><b>$nick, Ya se envió tu mensajete ;) </b></center>"; // EL AUTOR PONE ESTA LINEA.. NO SE LLEGA A VISUALIZAR PORQUE INMEDIATAMENTE VIENE UNA REDIRECCION. Header("Location: tag.php");// DE ESTA REDIRECCION TE ESTABA HABLANDO. EN ESTE CASO ESTAMOS REDIRECCIONANDO AL MISMO SCRIPT. }else{ // EN CASO QUE LAS VARIABLES $nick y $msg NO ESTEN DEFINIDAS ni cumplan los requisitos del IF HACEMOS... ?> <!-- MIENTRAS HAYA MENOS CODIGO POR INTERPRETAR MENOS VA A TRABAJAR NUESTRO MICROPROCESADOR, CERRAR EL TAG PHP AHI, NOS FAVORECE POR QUE LO QUE SIGUE ES HTML PURO NO NECESITA INTERPRETARSE :S //--> <link href="1.css" rel="stylesheet" type="text/css"> <body leftmargin="0" topmargin="0"> <table width="0" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <form action="<?php echo $PHP_SELF; ?>" method="post" name="Tagboard" target="_self" id="Tagboard"> <textarea class="TAG" name="textarea" cols="38" rows="13" readonly="readonly" wrap="virtual"> <?php // EL AUTOR DEL SCRIPT INCLUYE NUEVAMENTE EL ARCHIVO config.php, PERO NO CREO QUE SEA NECESARIO // PUES YA ESTA INCLUIDO MAS ARRIBA. include ("config.php"); $fichero_en_array = file("$archivo", "r+"); // file() ES UNA FUNCION QUE DEVUELVE UN ARRAY EN DONDE CADA ELEMENTO DEL ARRAY VIENE A SER UNA LINEA DEL ARCHIVO INCLUYENDO LOS SALTOS DE LINEA. $cuentamsj = count($fichero_en_array);//CONTAMOS EL NUMERO DE ELEMENTOS DEL NUEVO ARRAY Y LO ALMACENAMOS EN UNA VARIABLE $totaltag = count($fichero_en_array);// SUPUESTAMENTE EL AUTOR DEL SCRIPT CREO UNA VARIABLE PARA MOSTRAR EL Nº DE MENSAJES INGRESADOS HASTA EL MOMENTO. if($cuentamsj > $tagprint){ //$tagprint ES LA VARIABLE QUE INDICA EL NUMERO DE MENSAJES QUE QUEREMOS MOSTRAR. $cuentamsj = $tagprint; //EN CASO QUE EL NUMERO DE MENSAJES INGRESADOS SEA MAYOR AL QUE IN DICAMOS EN $tagprint (SU // NUMERO ESTA DEFINIDO EN EL FICHERO config.php) FORZAMOS QUE LA VARIABLE QUE CONTIENE EL TOTAL DE MENSAJES CAMBIE SU VALOR NUMERICO (SIN QUE ESTO AFECTE EN NADA //AL FICHERO) POR EL NUMERO QUE CONTIENE $tagprint. } function tag($fichero_en_array,$cuentamsj){ for ($i = 0; $i < $cuentamsj; $i++){ //RELLENAMOS POR INTERMEDIO DE ESTE FOR, LA PAGINA CON LOS MENSAJES DEL FICHERO $dtag = explode(":||:", $fichero_en_array[$i]); // LEEMOS LINEA A LINEA EL ARRAY QUE CONTIENE TODAS LAS LINEAS DEL FICHERO Y DIVIDIMOS CON explode() EN SUBCADENAS LAS CUALES VAN A SER ELEMENTOS INDEPENDIENTES DENTRO DEL ARRAY $dtag $dtag[2] = stripslashes($dtag[2]);//ELIMINAMOS LAS BARRAS INVERTIDAS EN EL MENSAJE PARA EVITAR DUPLICADOS (SUFRI MUCHO PARA ENTENDERLO :s) pues tuve que meterme a php.net y ahi me enteré de que en el php.ini hay una directiva llamada magic_quotes_gpc la cual esta por defecto en On, esto hace que sin la necesidad de llamar a AddSlashes se active en caso de tener que escapar caracteres tales como (\)barra invertida, (')comillas simples, (")comillas dobles ó valores NUL. $dtag[1] = stripslashes($dtag[1]); //LO MISMO QUE EL COMENTARIO ANTERIOR \o/ $dtag[2] = str_replace(":||:", " ", $dtag[2]); //NO LE ENCUENTRO UTILIDAD A ESTAS DOS LINEAS MAS QUE SI EL USUARIO QUE $dtag[1] = str_replace(":||:", " ", $dtag[1]);//INGRESE EL MENSAJE ESCRIBE :||: SE CAMBIA POR UN ESPACIO EN BLANCO $hecha="« $dtag[1] » $dtag[2]\n--------------------------------------\n";//ACA CONCATENAMOS EL NOMBRE Y MENSAJE DEL USUARIO Y LA ALMACENAMOS EN LA VARIABLE $hecha echo "$hecha";//AL FIN! INSERTAMOS EL NOMBRE DEL USUARIO Y SU MENSAJE EN EL TEXTAREA. } } tag($fichero_en_array,$cuentamsj);// HACEMOS LA LLAMADA A LA FUNCION tag($fichero_en_array,$cuentamsj) ?> </textarea></td> <td> <input type="submit" name="Submit" value="EnviarMsj"> </td> </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="0"> <input name="nick" type="text" id="nick" value="Tu Nick" size="8" maxlength="20"> </td> <td> <input name="msg" type="text" id="msg" value="Tu Mensaje" size="25" maxlength="150"></td> </tr></form> </table></td> </tr> </table> <?php if ($historial == "si"){//FIJATE EN EL ARCHIVO config.php AHI LE DICES AL SCRIPT SI QUIERES MOSTRAR UN HISTORIAL O NO. echo "<center><a href=historial_tag.php target=_blank><b>Historial :</b> $totaltag mensajes.</a></center>"; } } ob_end_flush();//Volcar (enviar) el búfer de salida y deshabilitar el uso del búfer (www.php.net) ?>
__________________ "Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva. Sn. Juan 4:19 Jesus
Última edición por Celcius; 03/02/2006 a las 16:55 |