2015-10-22 4 views
-1

Я работаю над веб-сайтом, но я немного не уверен, как действовать дальше. Я прочитал некоторую документацию, но я думаю, что я что-то пропустил или искал неправильные вещи. В принципе, у меня есть веб-сайт с кучей страниц и несколько страниц с формами. Я пытаюсь решить мою первую форму, зарегистрироваться, которая содержит регистрационную форму. Вот форма, которую пользователь будет заполнить для регистрации:Подключение HTML к MYSQL через PHP

<form action = "register.php" method = "post"> 

    <br><br>First Name:<br> 
    <input type="text" name="firstname"> 
    <br> 
    Last Name:<br> 
    <input type="text" name="lastname"> 
    <br> 
    Street Address:<br> 
    <input type="text" name="streetaddress"> <br> 
    City:<br> 
    <input type="text" name="city"> <br> 
    State:<br> 
    <input type="text" name="state"> <br> 
    Zip Code:<br> 
    <input type="text" name="zipcode"> <br> 
    Phone Number:<br> 
    <input type="text" name="phonenumber"> <br> 
    Email Address:<br> 
    <input type="text" name="emailaddress"> <br> 
    User Name:<br> 
    <input type="text" name="username"> <br> 
    Password:<br> 
    <input type="text" name="password"> <br> 

    <br>Would you like to receive emails about CSIT World Conference?<br> 
    <input type="radio" name="email" value="yes">Yes 
    <input type="radio" name="email" value="no">No 

    <br><br>Would you be interested in volunteering at CSIT World Conference??<br> 
    <input type="radio" name="help" value="yes">Yes 
    <input type="radio" name="help" value="no">No 

    <br><br> 
    <input type="submit" value="Submit"> 
</form> 

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

define('DB_NAME', 'register'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', 'password'); 
define('DB_HOST', 'localhost'); 

$link = mysql_connect(DB_NAME, DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
    } 

    $db_selected = mysql_select_db(DB_NAME, $link); 

    if (!$db_selected) { 
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
    } 

    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $streetaddress = $_POST['streetaddress']; 
    $city = $_POST['city']; 
    $state = $_POST['state']; 
    $zipcode = $_POST['zipcode']; 
    $phonenumber = $_POST['phonenumber']; 
    $emailaddress = $_POST['emailaddress']; 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

     $sql = "INSERT INTO register (firstname, lastname, streetaddress, city, state, zipcode, phonenumber, emailaddress, username, password) VALUES ('$firstname', '$lastname', '$streetaddress', '$city', '$state', '$zipcode', '$phonenumber', '$emailaddress', '$username', '$password')"; 

    $result = mysql_query($sql); 

    mysql_close(); 


</script> 

</html> 

Я также создал пустую базу данных MYSQL через phpmyadmin на XAMPP. В основном я пытаюсь выяснить, правильно ли я нахожусь на правильном пути. Я понимаю, что как только я попал в submit, он должен заполнить созданную мной таблицу register.mysql. Однако, похоже, ничего не происходит.

Кроме того, здесь мой connect.php файл

<html> 

    <head> 

    </head> 

    <body> 
     <?php 

     $con = mysql_connect("localhost","root","password");  
     if(!$con){ 

     die("Cannot connect:".mysql_error()); 
     } 


     mysql_close($con); 

     ?> 

    </body> 
</html> 

Любая помощь или направление было бы весьма признателен.

+0

необходимо прочитать руководство по 'mysql_connect()'. –

+0

'mysql_connect (DB_NAME, DB_HOST, DB_USER, DB_PASSWORD)', который является неправильным. Итак, почему у вас это есть, если у вас есть файл подключения? –

+0

Так что мне это не нужно, если у меня есть файл подключения? По какой-то причине я думал, что это всегда необходимо. Так я удалю файл? – Vortex11

ответ

1

Вы не должны использовать функции mysql_ *, потому что они устарели. Лучше попытаться изучить PDO, но для этого примера вы можете использовать mysqli_ *. Кроме того, проверьте информацию о хэшировании паролей. Надеюсь, вы найдете следующий код полезным.

<?php 
define('DB_NAME', 'register'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', 'password'); 
define('DB_HOST', 'localhost'); 

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
mysqli_set_charset($link, 'utf8'); 
if (!$link) { 
    die("Database connection failed: " . mysqli_error($link)); 
} 
//Use array to not repeat code 
$post_vars = array('firstname', 'lastname', 'streetaddress', 'city', 'state', 'zipcode', 'phonenumber', 'emailaddress', 'username', 'password'); 
foreach($post_vars as $key) { 
    $$key = mysqli_real_escape_string($link, $_POST[$key]); 
    //For example now there is a variable $firstname that you can use 
} 

$sql = "INSERT INTO user (firstname, lastname, streetaddress, city, state, zipcode, phonenumber, emailaddress, username, password) VALUES ('$firstname', '$lastname', '$streetaddress', '$city', '$state', '$zipcode', '$phonenumber', '$emailaddress', '$username', '$password');"; 
$result = mysqli_query($link, $sql); 
mysqli_close($link); 
?> 

Edit:

Вы можете выбрать данные, как это (рассмотреть также пытается код PDO, что другой ответ).

$query = "SELECT username, firstname, lastname FROM user;"; 
$result = mysqli_query($link, $query); 
while ($row = mysqli_fetch_array($result)) { 
    echo $row['username'].'<br />'; 
} 

РЕДАКТИРОВАТЬ 2

SQL, для пользовательской таблицы состоит в следующем. Отредактируйте его соответствующим образом.

CREATE TABLE IF NOT EXISTS user (
    id int unsigned not null auto_increment, 
    firstname varchar(40), 
    lastname varchar(40), 
    username varchar(40), 
    password varchar(40), 
    state varchar(40), 
    city varchar(40), 
    streetaddress varchar(40), 
    zipcode varchar(40), 
    phonenumber varchar(40), 
    emailaddress varchar(255), 
    email tinyint unsigned default 1, 
    help tinyint unsigned default 1, 
    time_created timestamp default CURRENT_TIMESTAMP, 
    primary key(id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
+0

Получение этих ошибок, когда я отправить форму: Примечание: Undefined переменной: подключение в C: \ XAMPP \ HTDOCS \ Луи-Колуччи-Рго-1-1 \ register.php на линии 24 Предупреждение: mysqli_query() ожидает параметр 1 является mysqli, null указан в C: \ xampp \ htdocs \ Louis-Colucci-Proj-1-1 \ register.php в строке 24 Предупреждение: mysqli_close() ожидает, что параметр 1 будет mysqli, строка, заданная в C : \ xampp \ htdocs \ Louis-Colucci-Proj-1-1 \ register.php в строке 25 – Vortex11

+0

Хорошо, ошибок нет. Спасибо много! Но моя следующая проблема заключается в том, как я могу извлечь эти данные? Разве я не могу найти его в PHPMyAdmin? Я собираюсь создать страницу входа в систему, используя эти данные, поэтому не должно быть видно где-нибудь? – Vortex11

+0

Проверьте за столом «зарегистрироваться». –

-1

Я бы посоветовал то же самое! используйте PDO и убедитесь, что вы «ПОДГОТОВИЛИ» свои заявления, я переписал ваши данные с помощью PDO. Подготавливая наши данные, мы можем предотвратить SQL-инъекцию, которая может негативно повлиять на целостность ваших данных, а также дать нежелательным пользователям доступ к вашим таблицам.

<?php 

// config 

$dbtype  = "mysql"; 
$dbhost  = "localhost"; 
$dbname  = "register"; 
$dbuser  = "root"; 
$dbpass  = "password"; 

// Connection Info 

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); 



// Write Query 

$sql = "INSERT INTO books (firstname,lastname,streetaddress,city,state,zipcode,phonenumber,emailaddress,username,password) VALUES (firstname,:lastname,:streetaddress,:city,:state,:zipcode,:phonenumber,:emailaddress,:username,:password)"; 

// Prepare Statement 


$q = $conn->prepare($sql); 

$q->execute(array(':firstname'=>$firstname 
':lastname'=>$lastname 
':streetaddress'=>$streetaddress 
':city'=>$city 
':state'=>$state 
':zipcode'=>$zipcode 
':phonenumber'=>$phonenumber 
':emailaddress'=>$emailaddress 
':username'=>$username 
':password'=>$password)); 


?> 
+0

Благодарим за помощь. Я также попытаюсь восстановить назначение с помощью этого подхода. – Vortex11

+0

Звучит неплохо, дайте мне знать, как это происходит, или если вам нужна помощь, я буду проводить большую часть дня. – Wally

+1

Это не удастся по двум причинам. 1) Отсутствие двоеточия в первом массиве значений и недостающие запятые для массива execute. http://php.net/manual/en/pdo.prepare.php –