Foros del Web » Programando para Internet » PHP »

3 errores: Notice :Undefined offset: 4 in

Estas en el tema de 3 errores: Notice :Undefined offset: 4 in en el foro de PHP en Foros del Web. Estoy probando un codigo que descargué de este mismo foro para poder ponerlo en una pagina y que los usuarios pongan comentarios. No puedo usar ...
  #1 (permalink)  
Antiguo 07/09/2009, 12:18
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
3 errores: Notice :Undefined offset: 4 in

Estoy probando un codigo que descargué de este mismo foro para poder ponerlo en una pagina y que los usuarios pongan comentarios.
No puedo usar bases de datos, por lo que me tengo que limitar a ficheros de texto.

Despues de 6 horas buscando por san google sistemas de este tipo ya hechos, cada uno daba un problema diferente. Este ultimo me ha gustado mucho y, la verdad, me gustaria poder utilizarlo, pero muestra los siguientes 3 mensajes cuando introduzco un comentario:

Notice: Undefined offset: 4 in C:\wamp\www\Portal\guestbook\file.php on line 15

Notice: Undefined offset: 4 in C:\wamp\www\Portal\guestbook\file.php on line 18

Notice: Undefined offset: 4 in C:\wamp\www\Portal\guestbook\file.php on line 21

Pongo a continuacion los dos ficheros que estoy utilizando:

file.php
Código:
<?php
/*
Created by Abimael Rodriguez
www.bravefire.com
v 1.0
*/

$file = "guestbook";

$gInfo = "";

$rFile = @fopen($file,"r");
	$file_array = @file($file);
	for($i = count($file_array); $i >= 0; $i--){
		if(strstr($file_array[$i], "%name%")){
			$gInfo .= "<fieldset><legend><b>" . preg_replace("/%name%/", "", $file_array[$i]) . "</b>";
		}
		if(strstr($file_array[$i], "%title%")){
			$gInfo .= "<i>" . preg_replace("/%title%/", "", $file_array[$i]) . "</i></legend>";
		}
		if(strstr($file_array[$i], "%comment%")){
			$gComment = preg_replace("/%comment%/", "", $file_array[$i]);
			$wrapComment = wordwrap($gComment, 68, "<br />", true);
			$gInfo .=  $wrapComment . "</fieldset><br>";
		}
	}
@fclose($rFile);
?>

<html>
<head>
<title>GUESTBOOK FILE</title>
</head>
<body topmargin=0 leftmargin=0>

<form name="guestForm" action="mod_file.php" method="post">
	<input type="hidden" name="whatType" value="fileInput">
	<input type="hidden" name="action" value="<?php echo $_SERVER["PHP_SELF"] ?>">
	<table align="center">
		<tr>
			<th colspan="2">Add info into file</th>
		</tr><tr>
			<td align="right">Name:</td>
			<td><input type="text" name="Name" size=30 maxlength=25></td>
		</tr><tr>
			<td align="right">Title:</td>
			<td><input type="text" name="Title" size=30 maxlength=25></td>
		</tr><tr valign="top">
			<td align=right>Comment:</td>
			<td><textarea name="Comment" rows="5" cols="40"></textarea></td>
		</tr><tr>
			<td colspan=2 align="right">
				<input type="submit" value="Submit">
				<input type="reset" value="Reset">
			</td>
		</tr>
	</table>
</form>

<div align="center">
	---------------------------------------------------------------------	
</div>

<table align="center" width="500">
	<tr>
		<td>
			<?php echo $gInfo; ?>
		</td>
	</tr>
</table>

</body>
</html>
mod_file.php
Código:
<?php
/*
Created by Abimael Rodriguez
www.bravefire.com
v 1.0
*/
foreach($_REQUEST as $key => $value){
	$value = trim($value);
	if(!empty($value)){
		$$key = $value;
	}
}

if($whatType == "fileInput" && !empty($Name) && !empty($Title) && !empty($Comment)){
	$file = "guestbook";
	$gInfo = "\r\n %comment% " . preg_replace("/\r\n/", "<br />", htmlentities($Comment, ENT_QUOTES)) . "\r\n"
		. "%title% " . htmlentities($Title, ENT_QUOTES) . "\r\n"
		. "%name% " . htmlentities($Name, ENT_QUOTES) . "\r\n";

	$wFile = fopen($file, "a+");
		fwrite($wFile, $gInfo);
	fclose($wFile);
}

if($whatType == "databaseInput" && !empty($Name) && !empty($Title) && !empty($Comment)){
	require_once("config.php");
	$sql_guestbook = "INSERT INTO `tbl_guestbook`(`Name`, `Title`, `Comment`)
		VALUES(
			'".htmlentities($Name, ENT_QUOTES)."',
			'".htmlentities($Title, ENT_QUOTES)."',
			'".htmlentities($Comment, ENT_QUOTES)."'
		)";
	$result_guestbook = mysql_query($sql_guestbook) or die(mysql_error());
}

header("Location: $action");
?>
Gracias anticipadas. Estoy seguro que es cualquier tonteria, pero no logro encontrar el fallo y la verdad, no se mucho de php, aprendí lo basico y en codigos medio largos me pierdo.
  #2 (permalink)  
Antiguo 07/09/2009, 22:00
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: 3 errores: Notice :Undefined offset: 4 in

Hola
Pues yo copie el código, y me funcionó al primer intento
Estas probando este código en un equipo tuyo local o directamente
en un servidor externo?
Puede que si es externo, o si estas probando en un servidor que tenga
algo de restricción de algún tipo, el usuario con el que estas trabajando
necesite permisos sobre el archivo guestbook en este caso para poder
realizar operaciones con el mismo
Revisa entonces los permisos y prueba nuevamente pues como te digo
a mi me funciono a la primera
Saludos
  #3 (permalink)  
Antiguo 08/09/2009, 02:21
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: 3 errores: Notice :Undefined offset: 4 in

estoy probando sobre WampServer y tengo muchos problemas en otros codigos porque no me deja acceder a los archivos y me lanza muchos mensajes de "Forbbiden" o como se escriba, pero en este codigo si me deja introducir la informacion en el fichero guestbook, y la muestra perfectamente, salvo por los 3 mensajes de notice que me salen siempre.
  #4 (permalink)  
Antiguo 08/09/2009, 08:10
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: 3 errores: Notice :Undefined offset: 4 in

Hola
Bueno, yo usaba wampserver antes, pero lo probe en una instalación directa que hice de apache, php y mysql, no use ni wampserver ni los otros que te instalan todo

Preguntas:
El usuario con el que estas haciendo las pruebas es administrador?
En que ubicación del equipo tienes tu carpeta www o htdocs?
Dicha carpeta que permisos tiene?
Que sistema operativo usas?
Que versión de wampserver usas?
Pero pues el mensaje de "Forbidden", generalmente es por permisos,
revisa una vez mas ese tema
Saludos
  #5 (permalink)  
Antiguo 08/09/2009, 13:12
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: 3 errores: Notice :Undefined offset: 4 in

estoy como administrador. Cuando miro las propiedades de la carpeta donde coloco el script siempre aparece como solo lectura. Con esto quiero decir, que si desmarco solo lectura y vuelvo a mirar las propiedades, automaticamente vuelve a estar como solo lectura. No se que es lo que abria que cambiar en el wampserver.

La carpeta www esta en c:\Wamp\www\Portal
El sistema operativo es Xp.
La version de WampServer es la 2.0

Saludos.
  #6 (permalink)  
Antiguo 08/09/2009, 20:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: 3 errores: Notice :Undefined offset: 4 in

Hola
Pues yo creo que tu problema va a ir con algo de lo de solo lectura
Has intentado en la carpeta www ubicar los archivos file.php, mod_file.php y guestbook?
Si la respuesta es no, entonces intenta ubicarlos allí e intenta nuevamente el script (antes chequea los permisos sobre todo del archivo guestbook y revisa que Solo Lectura este sin chequear, si esta chequeado quita eso y aplica cambios, y luego vuelve a revisar
Si no toma el cambio de remover solo lectura, entonces tu problema sería ese
Bueno, has esas pruebas y nos cuentas
Saludos
  #7 (permalink)  
Antiguo 08/09/2009, 22:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 15 años, 8 meses
Puntos: 31
Respuesta: 3 errores: Notice :Undefined offset: 4 in

Hola, el problema de ese error Notice: Undefined offset esta en la estructura del for aquí en esta linea for($i = count($file_array); $i >= 0; $i--){

tienes que enfocarte ahí no te doy la solución porque creo que este foro estará inactivo en unos minutos. y no regresare asta dentro de 24 horas a este foro

pero aquí te dejo unos ejemplos para pruebes haber si lo corriges

con esto te da ese error Notice: Undefined offset
Código PHP:
$num = array(
'Cero''Uno''Dos''Tres''Cuatro''Sinco''cinco''Siete''Ocho''Nueve',
);
for (
$i 0$i <= 10$i++) {
echo 
' El Numero <u>'.$num[$i].'</u> En Letras y el <u>'.$i.'</u> En Numeros <br />';

ya con este no

Código PHP:
$num = array(
'Cero''Uno''Dos''Tres''Cuatro''Sinco''cinco''Siete''Ocho''Nueve',
);
for(
$i=0;$i<count($num);$i++){
echo 
' El Numero <u>'.$num[$i].'</u> En Letras y el <u>'.$i.'</u> En Numeros <br />';

ni con este:

Código PHP:
$num = array(
'Cero''Uno''Dos''Tres''Cuatro''Sinco''cinco''Siete''Ocho''Nueve',
);
for (
$i 0$i != 10$i++)
echo 
' El Numero <u>'.$num[$i].'</u> En Letras y <u>'.$i.'</u> En Numeros <br />'
eso es php/5.2
__________________
╬-----╬
║☺₧☻║
╬-----╬
  #8 (permalink)  
Antiguo 09/09/2009, 06:03
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: 3 errores: Notice :Undefined offset: 4 in

La unica diferencia que noto entre el primer codigo y el segundo es que has juntado cada parte de la instruccion, es decir, primero tenias $i = 0 y ahora pones $i=0, pero eso no me sirve de nada, sigue dando el mismo fallo. Saludos.
  #9 (permalink)  
Antiguo 09/09/2009, 20:02
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: 3 errores: Notice :Undefined offset: 4 in

Hola
Has probado lo que te puse en el comentario 6??
  #10 (permalink)  
Antiguo 10/09/2009, 04:48
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: 3 errores: Notice :Undefined offset: 4 in

Tambien he probado a ponerlos en la carpeta www y tras revisar que los archivos no esten en modo solo lectura, sigue sucediendo exactamente lo mismo.

Quizas la unica solucion que voy a tener va a ser mandar el wamp a paseo y buscarme otro.
  #11 (permalink)  
Antiguo 10/09/2009, 05:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: 3 errores: Notice :Undefined offset: 4 in

A mi me salen tb esos avisos en el log del servidor, y tengo un servidor apache con php y MySql instalados por separado.
Aunque todavía no he podido depurarlos, estoy totalmente seguro de que se trata de como recorremos los arrays. Es decir, $file_array[4] no está definido.

Prueba a cambiar el for:
$inicio = count($file_array) - 1;
for($i = $inicio; $i >= 0; $i--)

El valor de $i lo inicializas a 4, que es numero de elementos que tiene el array, pero en realidad el bucle lo deberias recorrer desde el 3 hasta el 0.
  #12 (permalink)  
Antiguo 11/09/2009, 07:19
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: 3 errores: Notice :Undefined offset: 4 in

La verdad, abayubae, no entiendo lo que quieres decirme. De todos modos he desinstalado wamp y he puesto xampp, y este no me da ningun error, corre perfectamente.

Saludos y gracias por vuestra ayuda.
  #13 (permalink)  
Antiguo 12/09/2009, 01:28
Avatar de FabianSN  
Fecha de Ingreso: enero-2007
Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: 3 errores: Notice :Undefined offset: 4 in

Yo venía utilizando una versión de Wamp anterior y estos códigos me funcionaban perfectamente, por unos problemitas en mi Pc tuve que actualizar a Wamp 2.0 y me arroja estos errores que mencionas, además de no permitirme ingresar a la BD.

Googleando un poco encontré que en la nueva version de PHP 5.3 muchas funciones son deprecated y el manejo de arrays es distinto, lo mismo para el tema de BD.

Yo te recomendaría que instales una version nueva o actualizada de Xamp o Wamp y trates de solucionar tu problema, dado que cuando los proveedores de hosting decidan migrar a PHP 5.3 muchísimos sitios van a quedar inoperativos por este tipo de errores.

Un ejemplo de ello son las funciones Split y Eregi las cuales en la versión 5.3 son deprecated y en la version 6.0 ya no van a existir.

Ver texto en rojo en manual.

Saludos.
__________________
Letra de Canciones
  #14 (permalink)  
Antiguo 12/09/2009, 01:43
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: 3 errores: Notice :Undefined offset: 4 in

Pues la verdad es que es una lata tener que andar modificando el codigo para ajustarlo a los gustos de php. Pues nada, cuando tenga un rato me pongo a buscar todas las funciones obsoletas y las cambiare para que no den esos errores.

Gracias y saludos.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:19.