Foros del Web » Programación para mayores de 30 ;) » Programación General »

Error al intentar activar el lock ejemplo.txt Bad file descriptor

Estas en el tema de Error al intentar activar el lock ejemplo.txt Bad file descriptor en el foro de Programación General en Foros del Web. Tengo un sistema rotor de banners, que e instalado pero me da este error cuando un usuario intenta registrarse. Se ha encontrado un error al ...
  #1 (permalink)  
Antiguo 21/07/2006, 20:02
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 18 años, 4 meses
Puntos: 0
Error al intentar activar el lock ejemplo.txt Bad file descriptor

Tengo un sistema rotor de banners, que e instalado pero me da este error cuando un usuario intenta registrarse.

Se ha encontrado un error al intentar activar el lock isai.txt Bad file descriptor

Luego de resobre esto les boy hacer unas cuantas preguntas sobre CGI.

Por ejemplo como puedo cambiar los colores premeditado a un fichero cgi.

Gracias…
  #2 (permalink)  
Antiguo 22/07/2006, 11:44
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Depende de como sea el CGI, de como imprima el código HTML...

Si es un simple print tienes que colocar el HTML para que le de color...Mostranos como es el CGI...

Y con el tema del error, fijate si el archivo tiene permisos de escritura...CHMOD 766

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 22/07/2006, 16:05
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Serán permisos 755...
  #4 (permalink)  
Antiguo 22/07/2006, 16:42
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 18 años, 4 meses
Puntos: 0
Gracias jferrero por tu ayuda.

Bueno yo tengo mi sitio a logado en netfirms.com y no tengo cuenta FTP solo puedo subir los fichero vía web. Y no se como puedo dar permisos a loa ficheros.

Luego de resorber esto boy a mostrar el código fuente para ver si se puede hacer algo con el aspecto.

Si sabes como puedo comprobar o dar permiso ya sabes.
Gracias…
  #5 (permalink)  
Antiguo 23/07/2006, 05:43
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Con el mismo programa de FTP debería dejarte... si el programa es bueno, claro...
  #6 (permalink)  
Antiguo 23/07/2006, 12:53
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 18 años, 4 meses
Puntos: 0
Ya pero es que no tengo cuenta ftp los ficheros lo tengo que subir via web,
y no se como darles permiso porque no veo ninguna opción para ello.

¿Qué puedo hacer?
Gracias…
  #7 (permalink)  
Antiguo 24/07/2006, 03:37
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Leer la FAQ de netfirms.com:
How do I change permissions of a file or folder using Netfirms File Manager?

Y lo normal es que tengas acceso vía FTP...
FTP Tools
  #8 (permalink)  
Antiguo 24/07/2006, 13:27
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 18 años, 4 meses
Puntos: 0
Bueno sigo in enterarme.
Njoel7031o se nada de ingles.
Tú me puedes recomendar algún sitio gratuito que soporte CGI y que tenga cuenta FTP.

Este es uno de los ficheros que quiero modificarle el color.

#!/usr/bin/perl
#
# Program: bpmember.cgi
# Author: Drummond Miles
# Email: [email protected]
#
# Created: 29/12/98
# Last Modified: 12/09/99 - removed references to $cgipath for ease of cross-platform installation
# Copyright G.A.D.Miles 1998. All Rights Reserved
#
# Download script from http://www.gadnet.com/bplus
#
# This program is being distibuted as freeware. It can be freely downloaded and used.
# It may be modified as long as the copyright information remains intact.
#
# Any use of this program is entirely at the risk of the user. No liability will be
# accepted by the author.
#
# This code must not be sold, even in modified form, without the written permission
# of the author. This code must also not be distributed without the permission of the
# author.

require "bpvars.txt";
require "bpsubs.cgi";

print "Content-type: text/html\n\n";

read(STDIN,$indata,$ENV{'CONTENT_LENGTH'});
@indata = split(/&/,$indata);
foreach $i (0..$#indata)
{
$indata[$i] =~ s/\+/ /g;
($key,$val) = split(/=/,$indata[$i],2);
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$indata{$key} .= "\0" if (defined($indata{$key}));
$indata{$key} .= $val;
}

if ($indata{'showuser'})
{
&showuser;
}
elsif ($indata{'updateuser'})
{
&updateuser;
}
else
{
&getid;
}

sub getid
{
&header('Enter ID');
print("<form method=POST action=$cgiurl/bpmember.cgi>\n");
print("<input type=hidden name=showuser value=x>\n");
print("<center><table BORDER WIDTH=75\%>\n");
print("<tr><th ALIGN=CENTER BGCOLOR=\"#FF0000\"><b><font face=verdana><font color=\"#00FF00\"><font size=+0>Información del Usuario:</font></font></font></b></th></tr>\n");
print("<tr BGCOLOR=\"#FFFF00\"><td><center><table><tr><td ALIGN=RIGHT><font size=-1>Nombre Usuario:</font></td>\n");
print("<td><input type=text name=userid size=8 maxlength=8></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>Contraseña:</font></td>\n");
print("<td><input type=password name=userpass1 size=8 maxlength=8></td></tr>\n");
print("</table></center></td></tr></table></center>\n");
print("<br><br><center><input type=submit value=\"Ingresar\">\n");
print("</form></center>\n");
&footer;
}

sub showuser
{
&header('Members Only');
$error = 0;
if (!$indata{'userid'})
{
$error = 1;
print("<br><br><center><font size=+1><b>Error<br><br></font></b>\n");
print("<b>Usted debe ingresar su nombre de usuario<br></b>\n");
}
if (!$indata{'userpass1'})
{
if (!$error)
{
print("<br><br><center><font size=+1><b>Error<br><br></font></b>\n");
$error = 1;
}
print("<b>Usted debe ingresar su contraseña<br></b>\n");
}
if (!(-e "$bpdata/$indata{'userid'}.txt") && ($indata{'userid'}))
{
if (!$error)
{
print("<br><br><center><font size=+1><b>Error<br><br></font></b>\n");
$error = 1;
}
print("<b>Nombre de usuario no válido<br></b>\n");
print("(Observe que es sensitivo a las mayúsculas/minúsculas)<br>\n");
}
if ($error)
{
print ("<br><br><center>Utilice el botón \'Atrás\' en su navegador para corregir</center>\n");
return;
}
open (OLDUSER, "+<$bpdata/$indata{'userid'}.txt");
$lockfail = &lock("OLDUSER");
if ($lockfail)
{
&lockerror("$indata{'userid'}.txt");
}
@olduserlines = <OLDUSER>;
close (OLDUSER);
foreach $olduserlines (@olduserlines)
{
chop $olduserlines if ($olduserlines =~ /\n$/);
}
if (@olduserlines[8] ne $indata{'userpass1'})
{
print ("<br><br><center><font size=+1><b>Error<br><br></font></b>\n");
print ("<b>La contraseña no es correcta<br></b>\n");
print ("(Observe que es sensitiva a mayúsculas y minúsculas)<br>\n");
print ("<br><br><center>Utilice el botón \'Atrás\' en su navegador para volver a ingresar</center>\n");
return;
}
$userid = $indata{'userid'};
print "<br><center><font face=verdana><font size +2>Bienvenido <b>$indata{'userid'}</b></font></font></center>\n";
$earned = 0;
if (@olduserlines[5] > 0)
{
$earned = int(@olduserlines[4] / @olduserlines[5]);
}
$pc = "N/A";
if (@olduserlines[6] > 0)
{
$pc = (@olduserlines[7] * 100) / @olduserlines[6];
}
unless ($pc eq "N/A")
{
$pc =~ s/(.\d\d\d)\d*/$1/;
$pc = $pc . "%";
}
print("<br><center><table BORDER WIDTH=50\%>\n");
print("<tr><th ALIGN=CENTER BGCOLOR=\"#FF0000\"><b><font face=verdana><font color=\"#00FF00\"><font size=+0>Estadísticas de su cuenta de intercambio:</font></font></font></b></th></tr>\n");
print("<tr BGCOLOR=\"#FFFF00\"><td><center><table><tr><td ALIGN=RIGHT><font size=-1>Banners Impresos en SU sitio:</td><td> @olduserlines[4]</font></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>Créditos Acumulados:</td><td> $earned</font></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>Créditos Utilizados:</td><td> @olduserlines[6]</font></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>Click hacia SU sitio:</td><td> @olduserlines[7]</font></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>Porcentaje Efectividad:</td><td> $pc</font></td></tr>\n");
print("</td></tr></table></table></center>\n");

print("<form method=POST action=$cgiurl/bpmember.cgi>\n");
print("<input type=hidden name=updateuser value=x>\n");
print("<input type=hidden name=userid value=$userid>\n");
print("<br><center><table BORDER WIDTH=75\%>\n");
print("<tr><th ALIGN=CENTER BGCOLOR=\"#FF0000\"><b><font face=verdana><font color=\"#00FF00\"><font size=+0>Información de Usuario:</font></font></font></b></th></tr>\n");
print("<tr BGCOLOR=\"#FFFF00\"><td><center><table><tr><td ALIGN=RIGHT><font size=-1>Nombre:</font></td>\n");
print("<td><input type=text name=username size=20 maxlength=30 value='@olduserlines[0]'></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>Email:</font></td>\n");
print("<td><input type=text name=email size=30 maxlength=50 value=@olduserlines[1]></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>URL de su Sitio:</font></td>\n");
print("<td><input type=text name=siteurl size=40 maxlength=60 value=@olduserlines[2]></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>Título de su Sitio:</font></td>\n");
print("<td><input type=text name=sitetitle size=40 maxlength=60 value='@olduserlines[9]'></td></tr>\n");
print("<tr><td ALIGN=RIGHT><font size=-1>URL de su Banner:</font></td>\n");
print("<td><input type=text size=40 name=urlbanner maxlength=60 value=@olduserlines[3]><font size=1>(ej. http://sudominio.com/banner.gif)</font></td></tr></table>\n");
print("</td></tr></table></center>\n");
print("<br><br><center><input type=submit value=\"Modificar\">\n");
print("</center></form>\n");
}

sub updateuser
{
&header('Update User');
$error = 0;
if (!$indata{'username'})
{
$error = 1;
print("<br><br><center><b><font size=+1>Error<br><br></font></b>\n");
print("<b>Usted debe ingresar su nombre<br></b>\n");
}
if (!$indata{'email'})
{
if (!$error)
{
print("<br><br><center><b><font size=+1>Error<br><br></font></b>\n");
$error = 1;
}
print("<b>Usted debe ingresar su dirección e-mail<br></b>\n");
}
if (!$indata{'siteurl'})
{
if (!$error)
{
print("<br><br><center><b><font size=+1>Error<br><br></font></b>\n");
$error = 1;
}
print("<b>Usted debe ingresar la URL de su sitio<br></b>\n");
}
if (!$indata{'sitetitle'})
{
if (!$error)
{
print("<br><br><b><center><font size=+1>Error<br><br></font></b>\n");
$error = 1;
}
print("<b>Usted debe ingresar el título de su sitio<br></b>\n");
}
if ($error)
{
print ("<br><br><center>Utilice el botón \'Atrás\' en su navegador para corregir estos datos</center>\n");
return;
}
open (OLDUSER, "+<$bpdata/$indata{'userid'}.txt");
$lockfail = &lock("OLDUSER");
if ($lockfail)
{
&lockerror("$indata{'userid'}.txt");
}
@olduserlines = <OLDUSER>;
$olduserlines[0] = "$indata{'username'}\n";
$olduserlines[1] = "$indata{'email'}\n";
$olduserlines[2] = "$indata{'siteurl'}\n";
$olduserlines[9] = "$indata{'sitetitle'}\n";
$olduserlines[3] = "$indata{'urlbanner'}\n";
$olduserlines[13] = "0\n";
seek (OLDUSER,0,0);
truncate (OLDUSER,0);
foreach $olduserlines (@olduserlines)
{
chop $olduserlines if ($olduserlines =~ /\n$/);
print OLDUSER "$olduserlines\n";
}
close (OLDUSER);
$update = 1;
print "<br><br><center><font face=verdana><font size +2>El usuario <b>$indata{'userid'}</b> ha sido modificado.</font></font></center>\n";
print "<br><br><center>Por favor asegúrese que el siguiente código se encuentre incluído al menos en su página principal:</center>\n";
&htmlcode($indata{'userid'});
print "<br><br>Usted debe reemplazar AMBAS impresiones de <b><font color=\"#FF0000\">XX</font></b> por un número entre 01 y 99.<br>\n";
print "Por supuesto cada <b><font color=\"#FF0000\">XX</font></b> debe ser el mismo número en las dos partes a reemplazar.<br>\n";
print "Si usted copia este código en más de una página, entonces cada aparición de este código DEBE TENER UN VALOR DIFERENTE para <b><font color=\"#FF0000\">XX</font></b>, en cada página donde lo inserta, pero ambas XX deben ser iguales en una misma página. \n";
print "En otras palabras, si coloca este código en dos páginas, AMBAS apariciones de <b><font color=\"#FF0000\">XX</font></b> deben ser 01 en la primera página y 02 en la segunda página.\n";
}
  #9 (permalink)  
Antiguo 24/07/2006, 16:04
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
No hay mucho que entender de inglés, simplemente seguí lois gráficos, tenés que tenerloc omo el eljemplo de test.cgi...

Vamos chaval, ponele un poco de ganas, además hay servicios gratuitos de traducción, por ejemplo checeka www.altavista.com

2) en el ejemplo que me das fijate que hay muchas veces donde aparece <font color=\"#FF0000\" ese es el código HTML que tienes que cambiar para cambiar los colores de las fuentes...

Del background pues fijate poner un div que abarque todo el código HTML...

Espero que te sirva

Saludos
PD: No creo que haya servidores gratuitos con perl y FTP...
__________________
Esteban Quintana
  #10 (permalink)  
Antiguo 27/07/2006, 17:24
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 18 años, 4 meses
Puntos: 0
Bueno ya mas o meno se como dar permisos a los ficheros, pero claro no del todo cesecito da permiso 777. E rebuscado en el sitio y no encontré nada que me aclare como dar permiso 777.
En la imagen que a párese abajo se esta especificando o dando permiso 755.



Y en esta se esta especificando permiso 644



Pero no se como dar permiso 777 que es lo que nenecito.
Pos nama gracias y perdonen mi ignorancia.
  #11 (permalink)  
Antiguo 28/07/2006, 00:46
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Cuando hablamos de 755 o 777 estamos hablando de numeración octal. Así, un 7 quiere decir un 111 en binario y un 5 es el 101.

Eso, aplicado a los permisos quiere decir, por bits, y leídos de izquierda a derecha: Permiso para lectura(r), permiso para escritura(w) y permiso de ejecución(x).

Así, un 7 da todos los permisos, y un 5 sólo da permisos de lectura y ejecución.

Cuando se agrupan de 3 en 3, como un 755, cada dígito se asocia a entorno. De izquierda a derecha, cada dígito quiere decir: permisos que tiene el propietario del fichero, permisos del grupo de usuarios al que pertenece el fichero y permisos para todo el resto (todo el resto del planeta).

Así, un 755 quiere decir que damos permiso de lectura y escritura a todo el mundo y que sólo el propietario tiene permisos de escritura.

Un permiso 777 es muy peligroso, porque quiere decir que todo el mundo puede leer, escribir y ejecutar tu programa. Lo peligroso no es que pueda leer y ejecutar, sino la posibilidad de escribir. Podrían borrarte el programa o modificarlo. Para todo tipo de cgi y carpeta que lo aloje, lo normal es dejarlo en un 755.

Última edición por jferrero; 29/07/2006 a las 05:08
  #12 (permalink)  
Antiguo 28/07/2006, 07:56
 
Fecha de Ingreso: julio-2006
Mensajes: 22
Antigüedad: 18 años, 4 meses
Puntos: 0
Interesante
Esto no lo sabía, algo mas para la cabeza. Gracias por tu clarara explicación sobre esto.

Pero claro en el Software necesita esto par funcionar correctamente.
Esto son los permisos que hay que dar a los ficheros:
Asegúrese de que todos los scripts queden con permisos adecuados. Use: chmod 755 nombrescript
También vambie todos los permisos de los archivos .txt. Use: chmod 777 nombre archivo. El directorio
/bp/ads también debe quedar en 777. Al cambiar bp/ads a 777, quedará escribible por todos.

Claro que tiene unos cuantos consejos de seguridad a seguir, como proteger con contraseña el directorio /bp/ads.

E probado y no me sale macho ¿me puedes especificar como dar permiso 777 gráficamente

Owner
r
w
x

Group
r
w
x

Public
r
w
x

Márcame con un 1 las casillas que debo seleccionar y con un cero la que se quedaran vacías o lo que te parezca.

Ejemplo: Owner r0-w1-x1
Group r1-w0-x0
Public r0-w1-x1
Pero con la combinación para dar permiso 777

Gracias…
  #13 (permalink)  
Antiguo 29/07/2006, 05:10
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
A ver... si se dice 777, que es un número en octal, quiere decir que es 111 111 111 en binario... ergo significa que hay que poner activos TODOS los permisos.
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 14:27.