Formulario de confirmación de usuarios

Tengo un formulario de confirmación de usuarios en el mismo index de la página.
La información del registro, también se recoge en el index, por lo que querría saber que debo poner en el action.
Esto:
$_SERVER['PHP_SELF']
que si lo pongo me da un error como este:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\inetpub\wwwroot\miweb\index.php on line 371 (donde esta el action)
¿O qué debo poner?
Si lo mejor es recogerla en otra página, que debo poner en la otra página para recoger la información, estoy utilizando la phplib con su correspondiente archivo de configuración donde se recogen los datos de confirmación.

1 respuesta

Respuesta
1
Buff ma costado entender el código porque no uso esa nomenclatura.
Creo que funcionaria, solo que... si no encuentras el usuario... ¿qué id devuelves?
El id lo creas dentro del bucle de "he encontrado al usuario", pero si no lo encuentras, no se crea id...
Hola, la pregunta de arriba la he resuelto, quitando el value ya que solo era que para cuando fallaras, apareciese el nombre que habías puesto otra vez. Aun así si sabes porque es eso me gustaría saberlo por curiosidad.
Aprovecho para hacerte otra pregunta, ¿esta función de mi archivo configuración.php es correcta?
function auth_validatelogin(){
//valor a devolver en caso de que falle la autentificació
$id = false;
if (isset($_REQUEST['nombre_usuario']) && isset($_REQUEST['contrasenha'])){
$username=$_REQUEST['nombre_usuario'];
$password=md5($_REQUEST['contrasenha']);
//Si la autentificacion falla, form_login encontrará el valor $this->auth["uname"] definido y lo usará
//$this->auth['uname']= $username;
//Comprobar en la base de datos el par nombre de usuario/contraseña
$consulta= sprintf(
"SELECT idusuario,nombre_real FROM %s WHERE nombre_usuario = '%s' and contrasenha = '%s'",
$this->database_table,
addslashes($username),
addslashes($password)
);
$this->db->query($consulta);
//Si encontramos un usuario,cogemos su id
while($this->db->next_record()){
$id = $this->db->f('idusuario');
$this->auth['nombre_real'] = $this->db->f('nombre_real');
// $this->auth['perm'] = $this->db->f("p");
}
}
return $id;
}
}
Gracias y perdón por tanta pregunta, esta es la ultima y finalizare las pregunta.
Hola perdona que te moleste otra vez, mi formulario de confirmación de usuarios el siguiente, esta en el index.php, en un else, por si el usuario no ha sido identificado con éxito.
Por que aquí me da error, diciendo que no encuentra la variable $this y si lo pongo en otro archivo, ¿con el formulario en html no me da ningún error?. En mi archivo de configuración, la función auth_loginform es la siguiente:
function auth_loginform()
{
global $sess;
require("../index.php");
}
Y este es el formulario:
echo "<div align='center'>";
echo "</div>";
echo "<form action='print $this->url()' method=post>";
echo "Nombre de usuario: <br>";
echo "<input size='15' type='text' name='nombre_usuario' value='if (isset($this->auth['uname'])) echo htmlentities($this->auth['uname'])'><br>";
echo "Contraseña: <br>";
echo "<input size='15' type='password' name='contrasenha'>";
echo "<br>";
echo "<br>";
echo "<input type='image' src='cordobanostra/identificate.gif' name='submit' value='Enviar Identificacion'>";
echo"</p></form>";
echo "<br><br>";
echo "<a href='cordobanostra/registrar.php' class='estilo1'>Registrate Gratis</a>";
echo "</div>";
Pon index.php en el action o la página que tengas como index
¿Precisamente el id lo creo en ese bucle no?
$id = $this->db->f('idusuario');
O te refieres al
return $id;
De todas maneras, este ultimo lo he probado metiéndolo en el bucle y me sigue sin reconocer ningún usuario.
No no, me refiero a:
El usuario existe, entro en el blucle, se crea id, termina el blucle, devuelvo id
Si el usuario no existe, no entro en el bucle, NO SE CREA ID, devuelvo id...
Pues no le veo fallos... creo que si que es correcto.
¿Qué te hace mal?
Si no entra en el bucle, el valor de $id es false, fíjate en la primera linea entonces a la hora de verificar en mis otros archivos, simplemente tendría que hacer un if diciendo:
si $id es false
el usuario no esta registrado
else
el usuario si esta registrado.
En vez de
if($auth->is_authenticated() and $auth->auth['uid'] != 'nobody')
El no obstante no se de donde sale, pero si no lo pongo me da error.
echo "<form action={$_SERVER['PHP_SELF']} method=post>";
prueba a poner en vez de 'php_self' , \"php_self\"
A ver si es por las comillas...
¿Dónde haces la consulta a la base de datos?
Meto un id y una contraseña para autentificar un usuario, previamente ingresado en la base de datos, por código y manualmente, y no me lo identifica. Tengo dos formularios de identificación, uno en el index y otro que saltaría cuando el usuario no estuviese identificado.
El código del index es el siguiente.
<?php
require_once("prepend.php");
require_once("configuracion.php");
page_open (array("sess"=>"Sesion_usuario", "auth"=>"Auth_usuario"));
if (isset($_REQUEST['operacion']) and $_REQUEST['operacion'] == "identificar")
{
if($auth->auth['uid'] == 'nobody') {
$auth->login_if(true);
}
}
?>
Esa seria la cabecera, luego en la tabla donde sale el formulario:
<?php
if($auth->is_authenticated() and $auth->auth['uid'] != 'nobody'){
echo "<div align='center'>";
echo "El usuario esta identificado";
echo "Bienvenido." . $auth->auth['nombre_real'];
echo "</div>";
}
else
{
echo "<div align='center'>";
echo "</div>";
echo "<form action={$_SERVER['PHP_SELF']} method=post>";
echo "Nombre de usuario: <br>";
echo "<input size='15' type='text' name='nombre_usuario'><br>";
echo "Contraseña: <br>";
echo "<input size='15' type='password' name='contrasenha'>";
echo "<br>";
echo "<br>";
echo "<input type='image' src='cordobanostra/identificate.gif' name='submit' value='Enviar Identificacion'>";
echo"</p></form>";
echo "<br>";
//echo "<a href='cordobanostra/altausuario.php' class='estilo1'>Identificate</a><br>";
echo "<a href='cordobanostra/registrar.php' class='estilo1'>Registrate Gratis</a>";
echo "</div>";
}
if (isset($_REQUEST['operacion']))
{
$operacion=$_REQUEST['operacion'];
}
else
{
$operacion='';
}
?>
Y el codigo del otro archivo es el siguiente:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<p> </p>
<p><img src="cordobanostra/logo_small.gif" width="95" height="61"></p>
<p>Autentificación usuarios</p>
<p><br>
Nombre de usuario:<font color="#FFFFFF">r</font>
<input type="text" name="nombre_usuario" value="<?php if (isset($this->auth["uname"])) echo htmlentities($this->auth["uname"]) ?>">
<br>
<br>
Contraseña<font color="#000000">:</font><font color="#FFFFFF">
iiiiiiiiiiiiiiiii</font>
<input type="password" name="contrasenha">
<br>
<br>
<input type="submit" name="submit" value="Enviar Identificacion">
<input type="submit" name="cancel_login" value="Cancelar identificacion">
</p>
</form>
¿A lo mejor es algo de la base de datos no?
Perdón por la tardanza. La consulta la hago en el archivo de configuración, en el código que te pase antes, en la segunda contestación, es en la función auth_validate_login, te lo pongo para no marearte:
function auth_validatelogin(){
//valor a devolver en caso de que falle la autentificació
$id = false;
if (isset($_REQUEST['nombre_usuario']) && isset($_REQUEST['contrasenha'])){
$username=$_REQUEST['nombre_usuario'];
$password=md5($_REQUEST['contrasenha']);
//Si la autentificación falla, form_login encontrará el valor $this->auth["uname"] definido y lo usará
//$this->auth['uname']= $username;
//Comprobar en la base de datos el par nombre de usuario/contraseña
$consulta= sprintf(
"SELECT idusuario,nombre_real FROM %s WHERE nombre_usuario = '%s' and contrasenha = '%s'",
$this->database_table,
addslashes($username),
addslashes($password)
);
$this->db->query($consulta);
//Si encontramos un usuario,cogemos su id
while($this->db->next_record()){
$id = $this->db->f('idusuario');
$this->auth['nombre_real'] = $this->db->f('nombre_real');
// $this->auth['perm'] = $this->db->f("p");
}
}
return $id;
}
}
Me sale este error al poner lo que me has puesto:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\inetpub\wwwroot\cordobanostra\index.php on line 371
Parse error: parse error, expecting `']'' in c:\inetpub\wwwroot\cordobanostra\index.php on line 371
No creo que sea eso, ya que este mismo código lo utilizo en otro programa y me funciona, debe ser algo de la base de datos, no lo se.
Ok pues quita el \" y ponla simple.
Pues si no te va, no se `porque es, no le encuentro ningún error...
Ok, muchas gracias, yo estoy convencido de que es algo del phpmyadmin, segurísimo vamos. Pero bueno, seguiré intentando cosas a ver que pasa.
Saludos y gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas