duda php

chanquete

Quizá tenga más dudas, de momento os pongo esta. No entiendo que está mal.

La cuestión, tengo que meter un usuario y una contraseña. Si la contraseña es "1JM345" dice el nombre de usuario. Si es otra cualquiera nos daun mensaje de error.

Me da error en línea 7 de php. Yo no veo ninguno, cierto es que estoy empezando.

archivo html

<html>
<head></head>
<body>
<form action="/autentica.php" method="post">
nombre de usuarios:<input type="text" name="nombre" size="20"><br>
contraseña:<input type="password" name="clave" size="20">
<input type="submit" value="enviar">
<input type="reset" value="borrar">
</form>
</body>
</html> 

Archivo php

<html>
<head></head>
<body>

<?php

if ($clave=="1JM345")
	{
	echo "bienvenido $nombre";
	}
else
	{
	echo "contraña incorrecta";
	}
?>

<a href="inicio.html"> Haz clic para volver al formulario</a>
</body>
</html>
alterego

Te falta asignar a la variable $clave y $nombre el contenido del formulario.

<?php
$clave = $REQUEST['clave'];
$nombre = $
REQUEST['nombre'];

if(....

#3
Envias los datos del formulario al php del action, en este caso autentica.php
Por defecto php no recoge los valores que has enviado y los guarda en variables, las tienes que asignar tu.
$RESQUEST['name_del_formulario'] es la forma de recoger los datos que ha enviado el formulario, ya sólo te queda asignar esos datos a las variables.
$nombre = $
REQUEST['nombre'];
$clave = $_REQUEST['clave'];

1 respuesta
chanquete

#2 No lo entiendo muy bien. Pensaba que al meterle al html el contenido con el nombre clave. El archivo php recibía dicho contenido. por ejemcplo "clave.4567" y este la comparaba con el if con Si la clave es igual a "1JM345" entonces haz esto... si no lo otro.

1 respuesta
xuse92

#1 otro error pero no de código es que tienes mal el resultado se la segunda condición el ELSE, revisate el ECHO:

echo "contraña incorrecta"; (CONTRAÑA)

HeXaN

HTML:

<html>
	<head></head>
	<body>
		<form action="./autentica.php" method="post">
			<label for="nombre">Nombre de usuario:</label>
			<input type="text" name="nombre" id="nombre" size="20"></input>
			</br>
			<label for="clave">Contraseña:</label>
			<input type="password" name="clave" id="contraseña" size="20"></input>
			</br>
			<input type="submit" value="enviar"></input>
			<input type="reset" value="borrar"></input>
		</form>
	</body>
</html>

PHP:

<html>
	<head></head>
		<body>

	<?php

		$clave = $_POST["clave"];
		$nombre = $_POST["nombre"];

			if ($clave=='1JM345')
			        {
			        echo "Bienvenido ".$nombre;
			        }
			else
			        {
			        echo "Contraseña incorrecta.";
			        }

	?>

	<a href="/inicia.html"> Haz clic para volver al formulario</a>
	</body>
</html>
chanquete

Buenas muchachos...
La verdad es que html lo controlo bastante bien, quizá soy un poco desordenado.

En este caso tengo distintas operaciones para que al elegir una de ellas salga el resultado.

<html>
<head></head>
<body>
<fieldset><legend>Operaciones con número entero</legend>
<form action="/procesanumero.php"method="get">
Numero:<input type="text" name="numero" size="5">(positivo entre 1 y 40)<br>
Operación:<br>
<input type="radio" name="factorial" value="1"> Factorial<br>
<input type="radio" name="sumatorio" value="2"> Sumatorio desde 1 hasta el número<br>
<input type="radio" name="cuadrado" value="3"> Cuadrado <br>
<input type="radio" name="raiz" value="4">Raíz cuadrada <br>
<input type="submit" value="enviar">
</form>

</fieldset>
</body>
</html>

En el caso de radio no sé si tengo que darles el mismo nombre (para que sólo pueda hacer una operación). El concepto value en el caso del radio no sé para que sirve

La cuestión es que ido mirando las distintas o supuestas operaciones por internet para guiarme. He intentado hacer la que considero la más simple, que es la de realizar el "cuadrado" y a partir de ahí guiarme para hacer las demás. Pero me da error en la línea 8 (que creo que es la variable $cuadrado)

En radio le he dado el name="cuadrado" he de suponer según me habéis explicado con el $cuadrado = $REQUEST el servidor cogerá el valor de $cuadrado. Si lo que viene siendo la sintaxis de la operación está bien, debería de funcionarme, pero no es así.

<html>
<head></head>
<body>
<?php
$numero = $_REQUEST['numero']


$cuadrado = $_REQUEST['cuadrado']

/* factorial */
{ 		
   $resul = 1;
   for($i=1; $i <= $numero; $i++)
      $resul = $resul * $i;
      
return $resul; } /* sumatorio */ { while ($numero <=10) { $suma = $suma + $numero; $num = $numero + 1; echo "$numero.<br>";
} /* Cuadrado */ { $cuadrado = $numero * $numero; return $cuadrado; echo "el resultado es $cuadrado"; } /* Raíz Cuadrada */ { sqrt($numero); } ?> </body> </html>
1 respuesta
HeXaN

#6 No te olvides de poner los puntos y coma.

alterego

Si sólo quieres hacer una operación, tienes que usar radio y darle el mismo name a todos. Value es el valor que mandas al php.

<html>
<head></head>
<body>
<fieldset>
	<legend>Operaciones con número entero</legend>

<form action="/procesanumero.php" method="get">
	Numero:<input type="text" name="numero" size="5">(positivo entre 1 y 40)<br>
	Operación:<br>
	<input type="radio" name="operacion" value="1"> Factorial<br>
	<input type="radio" name="operacion" value="2"> Sumatorio desde 1 hasta el número<br>
	<input type="radio" name="operacion" value="3"> Cuadrado <br>
	<input type="radio" name="operacion" value="4">Raíz cuadrada <br>
	<input type="submit" value="enviar">
</form>

</fieldset>
</body>
</html>

El php lo puedes plantear de diferentes formas, yo he optado por un switch, que creo que se ajusta a lo que buscas.
Sólo vas a recibir el número que ha introducido y la operación que quiere hacer.

Si ha elegido por ejemplo el factorial, el formulario enviará junto al numero que operación quiere hacer, en el formulario hemos puesto que si opta por factorial se mandará operacion = 1.
Ya sólo te quede asociar cada número con una operación.

<?php

$numero = $_REQUEST['numero'];
$opcion = $_REQUEST['operacion'];

switch($opcion) {
	case 1: //factorial
		$resul = 1;
		for($i = 1; $i <= $numero; $i++)
			$resul = $resul * $i;
		echo "el factorial de " . $numero . " es = " . $resul;
		break;

case 2: //sumatorio
	echo "sumatorio";
	break;
	
case 3: //cuadrado
	echo "el cuadrado de " . $numero . " es = " .$numero * $numero;
	break;
	
case 4: //raíz cuadrada
	echo "la raíz cuadrada de " . $numero . " es = " . sqrt($numero);
	break;
}

?>

pd: no me ha quedado muy claro lo del sumatorio y no he puesto la operación.

Usuarios habituales

  • alterego
  • HeXaN
  • chanquete
  • xuse92