我有他的index.php代码:
<?php
session_start();
session_destroy();
?>
<!DOCTYPE html>
<html lang="es">
<meta charset="utf-8">
<head>
<title>Login</title>
<link rel="stylesheet" type="text/css" href="css/estilos.css">
</head>
<body>
<center>
<div class="caja_login">
<form method="POST" action="validar.php">
<label>Nombre de usuario:</label><input type="text" name="nombre" placeholder="Usuario" required/><br><br>
<label>Contraseña:</label><input type="password" name="contraseña" placeholder="Contraseña" required /><br><br>
<input type="submit" value="Entrar" class="enviar" placeholder="Entrar"/><br>
</form>
</div>
<div class ="caja_registro">
<form method="POST">
<label>¿Aún no estás registrado?</label><br>
<label>Nombre de usuario:</label><input type="text" name="nombrerg" placeholder="Nombre de usuario" required><br>
<label>Contraseña:</label><input type="password" name="contrarg" placeholder="Contraseña" required>
<input type="submit" name="registro" value="Crear Cuenta"><br>
</form>
</div>
<h1><?php include("conexion.php");?></h1>
</center>
<?php//para el registro
include("conexion.php");
if(isset($_POST['registro'])){
$sql = 'SELECT FROM cuenta';
$rec = mysqli_query($conexion, $sql);
$verificar =0;
while ($resultado = mysql_fetch_array($rec)) {
if ($resultado->nombre == _POST['nombrerg']) {//verificamos que el nombre de usuario no existe
$verificar = 1;//si verificar es 1 es que el usuario esta repetido
}
}
if ($verificar == 0) {//si varificar es 0 entonces el nombre no esta repetido
$nom = _POST['nombrerg'];
$pw = _POST['contrarg'];
$conexion->query("INSERT INTO cuenta (usuario, contraseña) VALUES ('$nom','$pw')";
mysqli_query($conexion, $sql);
echo 'Te has registrado con exito';
}else{
echo "El nombre de usuario ya existe!";
}
}
?>
</body>
</html>
当我进入页面时,它显示一切正确,但在所有内容下显示PHP代码,当我单击“registro”按钮时,它不会将数据插入数据库。
该页面是一个简单的登录和注册,但正如我所说的注册按钮(registro)不起作用。
编辑:
这是页面底部显示的内容:
nombre == _POST['nombrerg']) {//verificamos que el nombre de usuario no existe $verificar = 1;//si verificar es 1 es que el usuario esta repetido } } if ($verificar == 0) {//si varificar es 0 entonces el nombre no esta repetido $nom = _POST['nombrerg']; $pw = _POST['contrarg']; $conexion->query("INSERT INTO cuenta (usuario, contraseña) VALUES ('$nom','$pw')"; mysqli_query($conexion, $sql); echo 'Te has registrado con exito'; }else{ echo "El nombre de usuario ya existe!"; } } ?>
答案 0 :(得分:2)
由于你的代码格式化。
改变这个:
<?php//para el registro
要:
<?php //para el registro
而且:
$conexion->query("INSERT INTO cuenta (usuario, contraseña) VALUES ('$nom','$pw')";
要:
$conexion->query("INSERT INTO cuenta (usuario, contraseña) VALUES ('$nom','$pw')");
您在最后)
"
的最后一个
对于其他人,在开始标记//
中使用<?php
- 没有空格的注释会阻止对其进行正确解释。
作为旁注,你有两个包含在彼此之后,对于同一个文件,其中一个在<h1>
内无缘无故。
此外,您的代码非常容易受到SQL注入攻击。
答案 1 :(得分:0)
<?php//para el registro
可能会导致问题。将其更改为<?php //para el registro
(注意空格)
如果php的其余部分呈现,那么它不太可能是服务器问题。
此外,帖子的变量为$_POST
而不是_POST
重申一下。请不要以明文形式存储密码。这是一篇很好的解释semantics of reference types and value types的文章。有关此问题的更多问题,请随时查看其他StackExchange网站,例如why
答案 2 :(得分:0)
在下面的代码中,我使用换行符来区分PHP从您的评论开始的位置,之后,我注意到您使用了mysqli
和mysql
函数并更改为{{1仅在mysqli
中插入$
的地方。您的上一个查询有一个名为contraseña的列,不要在列名中使用特殊字符,我已将其更改为 contrasena 。
$_POST