Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/02/2006, 16:47
Avatar de Celcius
Celcius
 
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 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($fpfilesize($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($fp0); // 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="&laquo; $dtag[1] &raquo; $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>&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;
<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