Надеюсь, у вас все хорошо сегодня.
У меня есть вопрос, на который я не смог найти однозначного ответа.Большинство ресурсов заставляют меня поверить, что вопрос спорный, и мне не о чем беспокоиться, но я, к сожалению, не уверен.
У меня простой сайт, ничего сложного.На этом сайте есть форма, где пользователи могут отправлять данные, сохраненные в базу данных MySQL , используя простые функции PHP .Данные отправляются POST , очищаются, а затем отправляются в базу данных localhost для вставки в таблицу с помощью mysqli () и подготовленных операторов.
Теперь к сути.Теперь все работает отлично, но данные могут быть приватными, поэтому я хочу использовать SSL-сертификат (хостинг-провайдер также продает сертификаты, поэтому сама установка выполняется одним щелчком мыши)
Вопрос:Мне нужно изменить свой код для совместимости с SSL?
Я никогда не делал этого раньше, поэтому есть ли в моем простом случае какие-либо вещи, которые я должен рассмотреть и узнать?
Я знаючто сама функция вставки, вероятно, не нуждается в каких-либо модификациях, потому что она подключается к базе данных, которая находится на том же хосте, что и серверная часть, но форма POST все-таки приходит от внешнего пользователя, так что я должен беспокоиться об этом?
И более широкий вопрос: в случае простого сайта, такого как мой (только некоторые обычные HTML, CSS, PHP, как показано, некоторые ванильные JS и jQuery для стилевого оформления, а также для Google Analytics и Tag Manager)Что еще я должен учитывать при переходе на SSL, помимо перенастройки htaccess, чтобы заставить зрителей использовать HTTPS ичтобы убедиться, что нет смешанного контента?
Все, что я прочитал, наводит меня на мысль, что как только хостинг-провайдеры установят сертификат, я смогу набрать https://example.com
и все, все должно работать нормально.
Это правда?
Извините, если вопрос неубедительный, но я не смог найти однозначного ответа - иногда я ничего не понимаю.Спасибо за любой ответ заранее.
Вот мой код, на всякий случай.
Index.php и форма:
<?php
// Nonce (not mentioned in the question, but I didn't want to omit it for clarity)
$timestamp = time();
$form_action = 'submit_form';
$nonce = create_nonce($form_action, $timestamp);
// Pushing data
if(isset($_POST['form1'])){
if ( ! empty( $_POST ) ) {
$insert = process_data($_POST);
}
}
?>
// The Form
<form action="" method="post">
// Nonce fields, ignore
<input type="hidden" name="timestamp" value="<?php echo $timestamp; ?>">
<input type="hidden" name="form_action" value="<?php echo $form_action; ?>">
<input type="hidden" name="nonce" value="<?php echo $nonce; ?>">
// Here is the rest of the form
<input type="text" name="stuff1" required>
<input type="text" name="stuff2" required>
<input type="text" name="stuff3" required>
<input type="text" name="stuff4" required>
<input type="text" name="stuff5" required>
<button type="submit" name="form1">SEND STUFF</button>
</form>
Сами функции:
// NONCE - Creating the nonce
if ( ! function_exists( 'create_nonce' ) ) {
function create_nonce($action, $time) {
$str = sprintf('%s_%s_%s', $action, $time, NONCE_SALT1);
$nonce = hash('sha512', $str);
return $nonce;
}
}
// NONCE - Verification
if ( ! function_exists( 'verify_nonce' ) ) {
function verify_nonce($nonce, $action, $time) {
$check = create_nonce($action, $time);
if ( $nonce == $check ) {
return true;
}
return false;
}
}
// Now the important bit: the function processing data from the form
if ( ! function_exists( 'process_data' ) ) {
function process_data($post) {
// Check nonce
$verify = verify_nonce($post['nonce'], $post['form_action'], $post['timestamp']);
if ( false === $verify ) {
return false;
}
// Sanitization
$args = array(
'stuff1' => 'FILTER_SANITIZE_STRING',
'stuff2' => 'FILTER_SANITIZE_STRING',
'stuff3' => 'FILTER_SANITIZE_STRING',
'stuff4' => 'FILTER_SANITIZE_STRING',
'stuff5' => 'FILTER_SANITIZE_STRING',
);
$filter_post = filter_var_array($post, $args);
// Insert into the database
$mysql = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$stmt = $mysql->prepare("
INSERT INTO mydatatable (stuff1,stuff2,stuff3,stuff4,stuff5)
VALUES(?,?,?,?,?)
");
$stmt->bind_param("sssss",
$filter_post['stuff1'], $filter_post['stuff2'], $filter_post['stuff3'], $filter_post['stuff4'], $filter_post['stuff5']
);
$insert = $stmt->execute();
// Closing connections
$stmt->close();
$mysql->close();
return $insert;
}
}