ciao, ho un sito altervista e ho alcuni problemi, potreste aiuarmi?
Ho 3 problemi fondamentalmente:
1 non riesco ad fare domande sul forum di altervista: quando accedo alla pagina del forum, mi dice che non ho effettuato il login, ma quando lo faccio mi manda direttamente al mio pannello di controllo del sito, e da lì non riesco a passare al forum, perché se vado su supporto automaticamente esce dall'account. Sai perché?

2 sto provando a rendere possibile registrarsi (al momento non c'è bisogno di accedere) tramite un form HTML .
Però non funziona. (E se apro il file PHP mi mostra una immagine bianca, è normale o no?)
allego i codici PHP , HTML e JS.



database.php

<?php
$config = [
'db_engine' => '',
'db_host' => '',
'db_name' => 'my_paperpediaforum',
'db_user' => '',
'db_password' => '',
];

$db_config = $config['db_engine'] . ":host=".$config['db_host'] . ";dbname=" . $config['db_name'];

try {
$pdo = new PDO($db_config, $config['db_user'], $config['db_password'], [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
]);

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
exit("Impossibile connettersi al database: " . $e->getMessage());
}

register.php

<?php
require_once('database.php');

if (isset($_POST['register'])) {
// Verifica reCAPTCHA
$recaptchaResponse = $_POST['g-recaptcha-response'] ?? '';
$recaptchaSecretKey = ''; // Inserisci qui la tua chiave segreta reCAPTCHA
$recaptchaVerifyUrl = 'https://www.google.com/recaptcha/api/siteverify';
$recaptchaData = [
'secret' => $recaptchaSecretKey,
'response' => $recaptchaResponse
];
$recaptchaOptions = [
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query($recaptchaData)
]
];
$recaptchaContext = stream_context_create($recaptchaOptions);
$recaptchaVerify = file_get_contents($recaptchaVerifyUrl, false, $recaptchaContext);
$recaptchaResult = json_decode($recaptchaVerify, true);

if (!$recaptchaResult['success']) {
$msg = 'Verifica reCAPTCHA non riuscita %s';
printf($msg, '<a href="register.html">torna indietro</a>');
return;
}

// Altri dati del form
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';
$email = $_POST['email'] ?? '';

// Validazione dei campi
// Codice per la validazione dei campi

if (empty($username) || empty($password) || empty($email)) {
$msg = 'Compila tutti i campi %s';
} else {
$password_hash = password_hash($password, PASSWORD_BCRYPT);

// Verifica se l'email è già in uso
$query = "SELECT id FROM utenti WHERE email = :email";
$check = $pdo->prepare($query);
$check->bindParam(':email', $email, PDO::PARAM_STR);
$check->execute();
$existingEmail = $check->fetch(PDO::FETCH_ASSOC);

if ($existingEmail) {
$msg = 'L\'indirizzo email è già in uso %s';
} else {
// Inserimento nel database
$query = "
INSERT INTO utenti (username, email, password)
VALUES (:username, :email, assword)
";

$stmt = $pdo->prepare($query);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam('assword', $password_hash, PDO::PARAM_STR);
$stmt->execute();

if ($stmt->rowCount() > 0) {
$msg = 'Registrazione eseguita con successo';
} else {
$msg = 'Problemi con l\'inserimento dei dati %s';
}
}
}

// Visualizza messaggio di feedback
printf($msg, '<a href="register.html">torna indietro</a>');
}
?>
(questo dovrebbe collegarsi al database.php correttamente e inviare i dati raccolti dal form)
(ho tolto il codice segreto del reCAPTCHA,ma nel mio file c'è)


script-registrazione.js


document.addEventListener('DOMContentLoaded', function () {
const form = document.getElementById('registrazioneForm');
const confirm_password = document.getElementById('confirm_password');
const recaptchaResponse = document.getElementById('g-recaptcha-response');

form.addEventListener('submit', function (event) {
event.preventDefault();

const username = form.username.value.trim();
const email = form.email.value.trim();
const password = form.password.value;
const confirm_password_value = confirm_password.value;
const user_image = form.user_image.files[0];
const recaptchaValue = recaptchaResponse.value;

if (password !== confirm_password_value) {
alert('Le password non corrispondono');
return;
}

if (recaptchaValue === '') {
alert('Completa la verifica reCAPTCHA');
return; // Blocca l'invio del modulo
}

const formData = new FormData();
formData.append('register', '1');
formData.append('username', username);
formData.append('email', email);
formData.append('password', password);
formData.append('user_image', user_image);
formData.append('g-recaptcha-response', recaptchaValue);

// Invio della richiesta AJAX
const xhr = new XMLHttpRequest();
xhr.open('POST', form.action, true);
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
alert(xhr.responseText);
if (xhr.responseText.includes('successo')) {
// Reindirizza l'utente alla pagina di login o a un'altra pagina di successo
window.location.href = 'login.html';
}
} else {
alert('Si è verificato un errore durante la registrazione');
}
}
};
xhr.send(formData);
});
});

registrazione.html

<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Registrazione</title>
<link rel="stylesheet" href="registrazione.css">
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<div class="container">
<h2>Registrazione</h2>
<form id="registrazioneForm" action="register.php" method="post" enctype="multipart/form-data">
<div class="form-control">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
</div>
<div class="form-control">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div class="form-control">
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
</div>
<div class="form-control">
<label for="confirm_password">Ripeti Password:</label>
<input type="password" id="confirm_password" name="confirm_password" required>
</div>
<div class="form-control">
<label for="user_image">Immagine Utente (Max 100x100px):</label>
<input type="file" id="user_image" name="user_image" accept="image/*" required>
</div>
<div class="g-recaptcha" data-sitekey="6LfFfcEpAAAAAJ6-XQrO_kZOzfCYCewsENDJtWcj"></div> <!-- Inserisci la tua chiave del sito reCAPTCHA -->
<button type="submit">Registrati</button>
</form>
</div>

<script src="script-registrazione.js"></script>
</body>
</html>


avete idea di come mai non funzioni?
tenete conto che oltre a non registrare nel database i dati, non riesco a fare in modo che richiede la compilazione del recaptcha per poter proseguire e che il nome della tabella dela database è utenti.

se dovessi aver fatto una domanda stupida e inappropriata, chiedo scusa, sono nuovo.
può essere un problema di permessi del file? in ogni caso, come si modificano?

Terzo problema:
come posso modificare la struttura dei link del mio sito?

problema bonus: per adesso non è un problema ma può essere utile in futuro.

vorrei aggiungere un account altervista come co-amministratore del sito (dovrei poterlo fare tramite il pulsante FTP), ma è possibile registrarsi su altervista senza avere un sito o l'altra persona dovrebbe creare un sito per poi non gestirlo e fare il co-amministratore del mio?chiedo scusa se è una domanda stupida.
Grazie.