PHP и HTML Вход в систему - PullRequest
       4

PHP и HTML Вход в систему

0 голосов
/ 26 августа 2011

Я пытаюсь войти в систему и зарегистрировать скрипт с php и html. Это не работает, и я нажимаю кнопку. Что я делаю неправильно? Я новичок в программировании сайтов. Это HTML:

Регистрация:

<form action="register.php" method="post">
<input  type=text name="uid" /><br/></form>
<form action="register.php" method="post">
<input type="password" name="pass" /><br/>
</form>

<input type="submit" action="register.php" name="R" value="Sign Up" />

PHP:

require "sqlconnect.php"


$pass=$_POST("pass")
$uid=$_POST("uid")
$clicked=$_POST("R")


if($uid and $pass) { 

 connection()

 $ins = @mysql_query("INSERT INTO Users SET id='$uid', pass='$pass'"); 

 if($ins) 
 echo "Registered!You can log in now :)";
 header("Location: index2.php"); 

 else echo "Error!"; 

mysql_close($connection); 

Войти:

<center><cc><b>Please login to proceed:</b></cc></center>
<center><form action="login.php" method="post" style="border-color:#0068AD" >
<input  type=text name="uid" /><br/></form>
<form action="login.php" method="post" style="border-color:#0068AD" >
<input type="password" name="pass" /><br/>
</form>
<input type="submit" action="login.php" name="L" value="Log in"/><br/>
<center><cc><a href="register.html"> Register </a></cc></center>

PHP:

 require "sqlconnect.php"

connection()


$pass=$_POST("pass")
$uid=$_POST"uid")
$clicked=$_POST("L")

$pass = "SELECT `pass` FROM `Users` WHERE `id`='$uid'";
$passcheck = mysql_query($pass);

    if($clicked>1||$passcheck=true)
        header=index3.html
        elseif(clicked>1||passcheck=false)
            echo ("Wrong username or password")


 mysql_close($connection)

Ответы [ 7 ]

3 голосов
/ 26 августа 2011

вау.есть много ошибок

$pass=$_POST("pass")
$uid=$_POST("uid")
$clicked=$_POST("R")

должно быть

$pass=$_POST["pass"];
$uid=$_POST["uid"];
$clicked=$_POST["R"];

вы забыли много точек с запятой

форма должна выглядеть как

<form action="login.php" method="post" style="border-color:#0068AD" >
    <input type="password" name="pass" /><br/>
    <input type="submit" action="login.php" name="L" value="Log in"/>
</form>
<br/>

(отправка должна быть в форме)

1 голос
/ 26 августа 2011

Это мое лучшее предположение о том, что вы пытались сделать на основе оригинального кода. Я хотел бы видеть внутри sqlconnect.php, чтобы увидеть, что там происходит ...

Исправлений слишком много, чтобы упоминать их, задавать конкретные вопросы обо всем, что вы не понимаете ...


Регистрация

HTML:

<form action="register.php" method="post">
    <!-- forms should contain ONLY block level elements as direct children! -->
    <div>
        <input type="text" name="uid" /><br/>
        <input type="password" name="pass" /><br/>
        <input type="submit" value="Sign Up" />
    </div>
</form>

PHP:

$pass = $_POST["pass"];
$uid = $_POST["uid"];

if ($uid and $pass) { 
    require "sqlconnect.php";
    connection();
    $ins = @mysql_query("INSERT INTO `Users` (`id`,`pass`) VALUES ('".mysql_real_escape_string($uid)."','".mysql_real_escape_string($pass)."')"); 
    if ($ins) {
        echo "Registered! You can log in now :)";
        header('HTTP/1.1 302 Found');
        header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/index2.php");
    } else echo "Error!";
    mysql_close($connection);
}




Вход

HTML:

<form action="login.php" method="post" style="border-color:#0068AD;">
    <div>
        <center><b>Please login to proceed:</b></center><br/>
        <center><input type="text" name="uid" /><br/>
        <center><input type="password" name="pass" /></center><br/>
        <center><input type="submit" value="Log in"/></center>
    </div>
</form>
<center><a href="register.html">Register</a></center>

PHP:

require "sqlconnect.php";
connection();


$pass = $_POST["pass"];
$uid = $_POST["uid"];

if (!$passcheck = mysql_query("SELECT `pass` FROM `Users` WHERE `id`='".mysql_real_escape_string($uid)."'")) die('MySQL Error');
$passcheck = mysql_fetch_assoc($passcheck);
mysql_close($connection);

if ($passcheck['pass'] == $pass) {
  header('HTTP/1.1 302 Found');
  header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/index3.html");
} else echo ("Wrong username or password");
1 голос
/ 26 августа 2011

Ваши form сломаны. Все ваши входные данные должны быть внутри одного form, чтобы все они были представлены в одном и том же POST:

<form action="register.php" method="post">
  <input type=text name="uid" /><br/>
  <input type="password" name="pass" /><br/>
  <input type="submit" action="register.php" name="R" value="Sign Up" />
</form>

И

<center><cc><b>Please login to proceed:</b></cc></center>
<center>
  <form action="login.php" method="post" style="border-color:#0068AD" >
    <input type=text name="uid" /><br/>
    <input type="password" name="pass" /><br/>
    <input type="submit" action="login.php" name="L" value="Log in"/><br/>
  </form>
</center>
<center><cc><a href="register.html"> Register </a></cc></center>

(Кроме того, лучше не использовать тег center. Я понимаю, что вы только начинаете, но вы захотите использовать CSS для стилизации раньше, чем позже. . Это приведет к гораздо более чистой и простой в управлении разметке HTML.)

1 голос
/ 26 августа 2011

Ваша кнопка submit должна находиться внутри элемента form, и вы должны иметь все входы внутри одной и той же (единой формы)

HTML должен выглядеть примерно так:

<form action="register.php" method="post">
  <b>Username:</b> <input type="text" name="uid" /><br/>
  <b>Password:</b> <input type="password" name="pass" /><br/>
  <input type="submit" name="R" value="Sign Up" />
</form>

В то время как ваш PHP для извлечения данных из массива $ _POST должен быть:

$pass=$_POST["pass"];
$uid=$_POST["uid"];

И вам следует экранировать оба этих значения, прежде чем включать их в оператор SQL (чтобы предотвратить внедрение SQL).

Итак, ваша строка $pass должна выглядеть примерно так:

$pass = "SELECT `pass` FROM `Users` WHERE `id`='"+
   mysql_real_escape_string($uid)+"'";

А ваша строка $ins должна выглядеть примерно так:

$ins = @mysql_query("INSERT INTO Users SET id='".mysql_real_escape_string($uid)+
   "', pass='"+mysql_real_escape_string($pass)+"'");

И вы должны либо хэшироватьили зашифровывать пароли людей перед сохранением.

0 голосов
/ 26 августа 2011

На первый взгляд ваш оператор SQL INSERT неверен.Это должно быть INSERT INTO <code>users (id, pass) VALUES ('$ id', '$ pass') .Есть также много синтаксических ошибок, с которыми вам нужно разобраться.

0 голосов
/ 26 августа 2011

Ваша кнопка отправки должна быть внутри формы, иначе она не будет знать, что отправить.Вы также должны проверить безопасность своей формы, при взаимодействии с базой данных вы всегда должны очищать данные с помощью mysql_real_escape_string () .

Так что это должно выглядеть так:* Вы также пропускаете много точек с запятой, которые должны идти в конце каждой отдельной строки, как показано выше.

Вы также должны использовать двойные знаки равенства (==) или тройные знаки равенства (===) при сравнении операторов в операторе if вы должны читать:

if($clicked> 1 || $passcheck == true)

Вы также должны включить фигурные скобки, поэтому полный if должен выглядеть следующим образом:

if($clicked>1||$passcheck=true) {
    header = index3.html; //This should probably be header = 'index3.html'
} elseif(clicked> 1 || passcheck == false) {
    echo ("Wrong username or password");
}

I 'Возможно, мы пропустили некоторые, но есть много ошибок.

0 голосов
/ 26 августа 2011

Все поля и кнопка должны быть внутри одной формы.Не используйте разные формы для каждого.Я на мобильном телефоне, поэтому не могу опубликовать код.Оставлено как вики сообщества, чтобы люди добавили его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...