Кажется, я не могу подключить свою страницу PHP к моему тестовому серверу SQL и базе данных

Я хотел бы, чтобы пользователь заполнил форму, и эта информация была отправлена ​​​​в базу данных. Я использую html и php в dreamweaver и WAM с phpMyAdmin.

Я пробовал все, и мне не удается заставить мой .php-файл работать с моим тестовым сервером localhost (или любым другим сервером, если на то пошло). Это регистрационная форма, и есть документ html и документ php, я включу оба:

HTML-форма:

<table width="15px" border="0">
<form form action="localhost.php" method="POST">
<tr>
<td>Username</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Skype Name</td>
<td><input type="text" name="skype" /></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="pass" /></td>
</tr>
<tr>
<td>Retype Password</td>
<td><input type="password" name="repass" /></td>
</tr>
<tr>
  <td><input type="submit" name="submit" value="Submit"/></td>
</tr>
</form>

PHP File:

<?php
$hostname= "localhost";
$database = "boost";
$username = "root";
$password = "";
$localhost = mysqli_connect($hostname, $username, $password, $database);
if(mysqli_connect_errno())
    {
        die('Connection Failed'.mysqli_error());
    }

    ?> 
 <html>
  <head>
    <title>Sign Up</title>
  </head>
  <body>
    <?php 
        if(isset($_POST['Submit']))
        {
            $username=$_Post['username'];
            $skype=$_Post['skype'];
            $email=$_Post['email'];
            $pass=$_Post['pass'];
            $repass=$_Post['repass'];
                if(empty($username) || empty($skype) || empty($email) || empty($pass) || empty($repass))
                {
                    echo "Cannot leave any field blank";
                }
                elseif ($pass!=$repass)
                    {
                        echo "Passwords did not match! Please try again.";
                    }
                else
                {
                    $sql="INSERT INTO users(Username,SkypeID,Email,Password) " .
                         "VALUES ('$username','$skype','$email','$pass')";
                    $res=mysqli_query($localhost,$sql);
                    if(!$res)
                    {
                        die("Query Failed" .mysqli_error($localhost));
                    }
                else
                    {
                        echo "Welcome";
                    }
                }
        }

Когда я ввожу данные в поля для проверки, данные не отправляются на локальный сервер (или тот, который подключен к WAM). Я не знаю, что я делаю неправильно здесь. Мои документы HTML и PHP не связаны между собой для обмена значениями? Что-то не так с кодом? Я неправильно определяю свою базу данных?

РЕШЕНИЕ: Мои «POST» и «submit» не обрабатываются как чувствительные к регистру. Спасибо за помощь.


person Voken    schedule 10.11.2015    source источник
comment
какую ошибку вы получаете?   -  person Chetan Ameta    schedule 10.11.2015
comment
name вашей кнопки отправки — это отправить (все строчные буквы), но вы проверяете $_POST['Submit'] (прописная буква S). Кроме того, данные POST находятся в $_POST, а не $_Post. Голосую за закрытие как простую опечатку   -  person Phil    schedule 10.11.2015
comment
также SQL Injection   -  person Memor-X    schedule 10.11.2015
comment
@Memor-X ... и это php;)   -  person Markus W Mahlberg    schedule 10.11.2015


Ответы (1)


Вы пытались отредактировать свой php:

isset($_POST['Submit']

и измените его на:

isset($_POST['submit']

переменная $_POST чувствительна к регистру, поэтому вы должны использовать точно такое же имя, которое вы назначаете в своем HTML-коде.

CMIIW

person salkuadrat    schedule 10.11.2015
comment
Не только ключи в $_POST чувствительны к регистру, но и все переменные в PHP. Имея это в виду, это всегда должно быть $_POST, а не $_Post, как в некоторых кодах OP. - person Phil; 10.11.2015
comment
Ах. Я изменил все ошибки, чувствительные к регистру, и я считаю, что теперь это работает. - person Voken; 10.11.2015
comment
@Voken Подумайте о том, чтобы принять ответ. Вот как meta.stackexchange.com/ вопросов/5234/, затем вернитесь сюда и сделайте то же самое с галочкой/галочкой, пока она не станет зеленой. Это информирует сообщество о том, что решение найдено. В противном случае другие могут подумать, что вопрос все еще открыт, и могут захотеть опубликовать (больше) ответов. - person Funk Forty Niner; 12.11.2015