Buonasera,
ho tre pagine, la prima (area_riservata.php) contiene il form per l'inserimento dei dati nel DB e del php per la visualizzazione del messaggio di inserimento avvenuto con successo :
<head>
......
<style>
.header-wrap-clone{
height: 100px!important;
}
.file-caption.icon-visible .file-caption-name {
font-family: 'Lato', sans-serif;
color: #666;
}
.form-widget { position: relative; }
#checkout-same-as-billing {
position: absolute;
top: 10px;
left: auto;
right: 0;
z-index: 5;
}
#checkout-same-as-billing2 {
position: absolute;
top: 10px;
left: auto;
right: 0;
z-index: 5;
}
#checkout-same-as-billing3 {
position: absolute;
top: 10px;
left: auto;
right: 0;
z-index: 5;
}
#checkout-same-as-billing4 {
position: absolute;
top: 10px;
left: auto;
right: 0;
z-index: 5;
}
#checkout-same-as-billing5 {
position: absolute;
top: 10px;
left: auto;
right: 0;
z-index: 5;
}
#checkout-same-as-billing6 {
position: absolute;
top: 10px;
left: auto;
right: 0;
z-index: 5;
}
.file-caption.icon-visible .file-caption-name {
font-family: 'Lato', sans-serif;
color: #666;
}
.form-process {
position: absolute;
-webkit-transition: all .3s ease;
-o-transition: all .3s ease;
transition: all .3s ease;
background-image: none;
}
.form-process > div { background-color: #999; }
.form-process,
#template-contactform-submitted,
.template-contactform-complete .form-process {
display: none;
opacity: 0;
background-color: rgba(255,255,255,0.7);
}
.template-contactform-processing .form-process {
display: block;
opacity: 1;
}
</style>
</head>
......
<section id="content">
<div class="content-wrap">
<div class="container clearfix">
<div style="text-align: center;">
<h3 style="font-weight: bold;">Area Riservata</h3>
<p style="font-weight: bold;">Benvenuto, <?php echo $nome; ?>!</p>
</div>
<div class="form-widget">
<div class="form-result"></div>
<form class="row" id="checkout-form" action="aggiungi_record.php" method="post" enctype="multipart/form-data" target="_self">
<div class="form-process">
<div class="css3-spinner">
<div class="css3-spinner-scaler"></div>
</div>
</div>
<div class="col-lg-6">
<div class="row checkout-form-billing">
<div class="col-12 form-group">
<label for="stagione">Stagione:</label>
<input type="text" name="stagione" id="checkout-form-billing-stagione" class="form-control required" placeholder="Stagione">
</div>
<div class="col-12 form-group">
<label for="societa">Società:</label>
<input type="text" name="societa" id="checkout-form-billing-societa" class="form-control required" placeholder="Società">
</div>
<div class="col-6 form-group">
<label for="campionato">Campionato:</label>
<select name="campionato" class="form-select required" id="checkout-form-billing-campionato">
<option value="Champions League">Champions League</option>
<option value="Europa League">Europa League</option>
<option value="Serie A">Serie A</option>
<option value="Serie B">Serie B</option>
<option value="Serie C">Serie C</option>
<option value="Serie D">Serie D</option>
</select>
</div>
<div class="col-12 form-group">
<label for="giocatore">Giocatore:</label>
<input type="text" name="giocatore" id="checkout-form-billing-giocatore" class="form-control required" placeholder="Giocatore">
</div>
<div class="col-12 form-group">
<label for="match">Match:</label>
<input type="text" name="match" id="checkout-form-billing-match" class="form-control required" placeholder="Match">
</div>
<div class="col-12 bottommargin-sm">
<label for="template-contactform-platform1" class="mb-3">Tempo di Gioco:</label><br>
<div class="btn-group w-100" role="group">
<input type="radio" class="btn-check" name="tempo_di_gioco" id="template-contactform-platform-mobile" autocomplete="off" value="1° Tempo">
<label for="template-contactform-platform-mobile" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">1° T</label>
<input type="radio" class="btn-check" name="tempo_di_gioco" id="template-contactform-platform-web" autocomplete="off" value="2° Tempo">
<label for="template-contactform-platform-web" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">2° T</label>
<input type="radio" class="btn-check" name="tempo_di_gioco" id="template-contactform-platform-others" autocomplete="off" value="ND">
<label for="template-contactform-platform-others" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">ND</label>
</div>
</div>
<div class="col-12 bottommargin-sm">
<label for="template-contactform-platform2" class="mb-3">Maglia:</label><br>
<div class="btn-group w-100" role="group">
<input type="radio" class="btn-check" name="maglia[]" id="template-contactform-platform-mobile1" autocomplete="off" value="1">
<label for="template-contactform-platform-mobile1" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">1°</label>
<input type="radio" class="btn-check" name="maglia[]" id="template-contactform-platform-web1" autocomplete="off" value="2">
<label for="template-contactform-platform-web1" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">2°</label>
<input type="radio" class="btn-check" name="maglia[]" id="template-contactform-platform-others1" autocomplete="off" value="3">
<label for="template-contactform-platform-others1" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">3°</label>
<input type="radio" class="btn-check" name="portiere" id="template-contactform-platform-others2.1" autocomplete="off" value="si">
<label for="template-contactform-platform-others2.1" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">Portiere</label>
</div>
</div>
<div class="col-12 bottommargin-sm">
<label for="template-contactform-platform3" class="mb-3">Maglia in Vendita:</label><br>
<div class="btn-group w-100" role="group">
<input type="radio" class="btn-check" name="invendita" id="template-contactform-platform-mobile3" autocomplete="off" value="si">
<label for="template-contactform-platform-mobile3" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">SI</label>
<input type="radio" class="btn-check" name="invendita" id="template-contactform-platform-web3" autocomplete="off" value="no">
<label for="template-contactform-platform-web3" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">NO</label>
</div>
</div>
<div class="col-12 bottommargin-sm">
<label for="template-contactform-platform4" class="mb-3">Memorabilia:</label><br>
<div class="btn-group w-100" role="group">
<input type="radio" class="btn-check" name="memorabilia" id="template-contactform-platform-mobile4" autocomplete="off" value="si">
<label for="template-contactform-platform-mobile4" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">SI</label>
<input type="radio" class="btn-check" name="memorabilia" id="template-contactform-platform-web4" autocomplete="off" value="no">
<label for="template-contactform-platform-web4" class="btn btn-outline-secondary flex-fill fw-semibold ls0 nott">NO</label>
</div>
</div>
</div>
</div>
<div class="col-lg-6 mt-5 mt-lg-0">
<div class="row checkout-form-shipping">
<div class="col-12 form-group">
<label for="taglia">Taglia:</label>
<input type="text" name="Taglia" id="checkout-form-billing-taglia" class="form-control required" placeholder="Taglia">
</div>
<div class="col-12 form-group">
<label for="numero_maglia">Numero Maglia:</label>
<input type="text" name="numero_maglia" id="checkout-form-shipping-nmaglia" class="form-control required" value="" placeholder="Numero Maglia">
</div>
<div class="col-6 form-group">
<label for="descrizione">Descrizione:</label>
<input type="text" name="descrizione" id="checkout-form-shipping-descrizione" class="form-control required" value="" placeholder="Descrizione">
</div>
<div class="col-6 form-group">
<label for="particolarita">Particolarità:</label>
<input type="text" name="particolarita" id="checkout-form-shipping-particolarita" class="form-control required" value="" placeholder="Particolarità">
</div>
<div class="col-6 form-group">
<label for="foto1">Foto Retro Maglia:</label>
<input type="file" name="foto1" id="foto1">
</div>
<div class="col-6 form-group">
<label for="foto2">Foto Fronte Maglia:</label>
<input type="file" name="foto2"id="foto2">
</div>
<div class="col-6 form-group">
<label for="foto_prova">Foto Prova:</label>
<input type="file" name="foto_prova" id="foto_prova">
</div>
<div class="col-6 form-group">
<label for="foto_prova2">Foto Prova 2:</label>
<input type="file" name="foto_prova2" id="foto_prova2">
</div>
<div class="col-12">
<div class="form-group center">
<form id="aggiungiRecordForm" action="aggiungi_record.php" method="POST">
<button id="aggiungiRecordButton" type="submit" class="btn btn-primary">Aggiungi Record</button>
</form>
</div>
</div>
</div>
</div>
<?php
// Verifica se il parametro "message" è presente nell'URL
if (isset($_GET['message'])) {
$message = $_GET['message'];
echo '<div style="text-align: center; color: green; font-weight: bold;">' . $message . '</div>';
}
?>
</form>
</div>
</div>
</div>
</section><!-- #content end -->
Poi la pagina_aggiungi_record.php
<?php
include 'db_connect.php'; // Includi il file di connessione al database
include 'ftp_function.php'; // Includi il file con le funzioni di spostamento FTP
// Funzione per verificare se il file è un'immagine
function isImageFile($file) {
$imageTypes = ['image/jpeg', 'image/png', 'image/gif'];
return in_array($file['type'], $imageTypes);
}
// Gestione del form di inserimento
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$stagione = $_POST["stagione"];
$anno = substr($stagione, 0, 4);
$anno_successivo = $anno + 1;
$targetDir = "public/fotomaglie/" . $anno . "_" . $anno_successivo . "/";
if (!is_dir($targetDir)) {
mkdir($targetDir, 0777, true);
}
$foto1 = "";
$foto2 = "";
$foto_prova = "";
$foto_prova2 = "";
if ($_FILES["foto1"]["name"] != "") {
if (isImageFile($_FILES["foto1"])) {
$foto1 = $targetDir . $_FILES["foto1"]["name"];
if (!move_uploaded_file($_FILES["foto1"]["tmp_name"], $foto1)) {
echo "Errore nel caricamento della foto 1.";
exit;
} else {
$destination_file = "/la-maglia-rosanero.com/fotomaglie/" . $anno . "_" . $anno_successivo . "/" . $_FILES["foto1"]["name"];
$source_file = $foto1;
if (!moveFileViaFTP($source_file, $destination_file, $ftp_server, $ftp_user_name, $ftp_user_pass)) {
echo "Errore nello spostamento della foto 1 via FTP.";
exit;
}
}
} else {
echo "Errore: il file 1 non è un'immagine.";
exit;
}
}
if ($_FILES["foto2"]["name"] != "") {
if (isImageFile($_FILES["foto2"])) {
$foto2 = $targetDir . $_FILES["foto2"]["name"];
if (!move_uploaded_file($_FILES["foto2"]["tmp_name"], $foto2)) {
echo "Errore nel caricamento della foto 2.";
exit;
} else {
$destination_file = "/la-maglia-rosanero.com/fotomaglie/" . $anno . "_" . $anno_successivo . "/" . $_FILES["foto2"]["name"];
$source_file = $foto2;
if (!moveFileViaFTP($source_file, $destination_file, $ftp_server, $ftp_user_name, $ftp_user_pass)) {
echo "Errore nello spostamento della foto 2 via FTP.";
exit;
}
}
} else {
echo "Errore: il file 2 non è un'immagine.";
exit;
}
}
if ($_FILES["foto_prova"]["name"] != "") {
if (isImageFile($_FILES["foto_prova"])) {
$foto_prova = $targetDir . $_FILES["foto_prova"]["name"];
if (!move_uploaded_file($_FILES["foto_prova"]["tmp_name"], $foto_prova)) {
echo "Errore nel caricamento della foto di prova.";
exit;
} else {
$destination_file = "/la-maglia-rosanero.com/fotomaglie/" . $anno . "_" . $anno_successivo . "/" . $_FILES["foto_prova"]["name"];
$source_file = $foto_prova;
if (!moveFileViaFTP($source_file, $destination_file, $ftp_server, $ftp_user_name, $ftp_user_pass)) {
echo "Errore nello spostamento della foto di prova via FTP.";
exit;
}
}
} else {
echo "Errore: il file foto prova non è un'immagine.";
exit;
}
}
if ($_FILES["foto_prova2"]["name"] != "") {
if (isImageFile($_FILES["foto_prova2"])) {
$foto_prova2 = $targetDir . $_FILES["foto_prova2"]["name"];
if (!move_uploaded_file($_FILES["foto_prova2"]["tmp_name"], $foto_prova2)) {
echo "Errore nel caricamento della foto di prova 2.";
exit;
} else {
$destination_file = "/la-maglia-rosanero.com/fotomaglie/" . $anno . "_" . $anno_successivo . "/" . $_FILES["foto_prova2"]["name"];
$source_file = $foto_prova2;
if (!moveFileViaFTP($source_file, $destination_file, $ftp_server, $ftp_user_name, $ftp_user_pass)) {
echo "Errore nello spostamento della foto di prova 2 via FTP.";
exit;
}
}
} else {
echo "Errore: il file foto prova 2 non è un'immagine.";
exit;
}
}
// Preparazione dell'inserimento nel database
$giocatore = $_POST["giocatore"];
$societa = $_POST["societa"];
if (isset($_POST['maglia']) && is_array($_POST['maglia'])) {
$maglie_selezionate = $_POST['maglia'];
$maglia = '';
foreach ($maglie_selezionate as $maglia_selezionata) {
if ($maglia !== '') {
$maglia .= ', ';
}
$maglia .= $maglia_selezionata;
}
} else {
$maglia = ''; // Nessuna maglia selezionata
}
$numero_maglia = $_POST["numero_maglia"];
$campionato = $_POST["campionato"];
$match = $_POST["match"];
$tempo_di_gioco = $_POST["tempo_di_gioco"];
$particolarita = $_POST["particolarita"];
$descrizione = $_POST["descrizione"];
$Taglia = $_POST["Taglia"];
// Ottenere il valore per il campo "paginariferimento"
$paginariferimento = str_replace('/', '', $stagione) . '.php';
$memorabilia = 0; // Valore predefinito per $memorabilia
$portiere = 0; // Valore predefinito per $portiere
$invendita = 0; // Valore predefinito per $invendita
if ($_POST['invendita'] == 'si') {
$invendita = 1;
}
if ($_POST['memorabilia'] == 'si') {
$memorabilia = 1;
}
if ($_POST['portiere'] == 'si') {
$portiere = 'si';
}
// Inserimento dei dati nel database
$sql = "INSERT INTO maglie (anno, giocatore, societa, maglia, numero_maglia, stagione, campionato, `match`, tempo_di_gioco, particolarita, descrizione, foto1, foto2, Taglia, foto_prova, foto_prova2, invendita, memorabilia, paginariferimento, portiere)
VALUES ('$anno', '$giocatore', '$societa', '$maglia', '$numero_maglia', '$stagione', '$campionato', '$match', '$tempo_di_gioco', '$particolarita', '$descrizione', '$foto1', '$foto2', '$Taglia', '$foto_prova', '$foto_prova2', '$invendita', '$memorabilia', '$paginariferimento', '$portiere')";
// Dopo aver aggiunto il record, reindirizza l'utente alla pagina "area_riservata.php"
header("Location: area_riservata.php?message=Record%20Aggiunto%20con%20successo");
// Verifica se il file caricato non è un'immagine
$allowedTypes = array('image/jpeg', 'image/png', 'image/gif');
$fileType1 = $_FILES['foto1']['type'];
$fileType2 = $_FILES['foto2']['type'];
$fileTypeProva = $_FILES['foto_prova']['type'];
$fileTypeProva2 = $_FILES['foto_prova2']['type'];
if (!in_array($fileType1, $allowedTypes) && $fileType1 !== '') {
$errorMessage = 'Il file 1 deve essere un\'immagine JPEG, PNG o GIF.';
header("Location: aggiungi_record.php?message=" . urlencode($errorMessage));
exit;
}
if (!in_array($fileType2, $allowedTypes) && $fileType2 !== '') {
$errorMessage = 'Il file 2 deve essere un\'immagine JPEG, PNG o GIF.';
header("Location: aggiungi_record.php?message=" . urlencode($errorMessage));
exit;
}
if (!in_array($fileTypeProva, $allowedTypes) && $fileTypeProva !== '') {
$errorMessage = 'Il file di prova deve essere un\'immagine JPEG, PNG o GIF.';
header("Location: aggiungi_record.php?message=" . urlencode($errorMessage));
exit;
}
if (!in_array($fileTypeProva2, $allowedTypes) && $fileTypeProva2 !== '') {
$errorMessage = 'Il secondo file di prova deve essere un\'immagine JPEG, PNG o GIF.';
header("Location: aggiungi_record.php?message=" . urlencode($errorMessage));
exit;
}
if ($conn->query($sql) === TRUE) {
echo "Record inserito con successo.";
// Query per sostituire il testo "public/" con "../" nelle colonne foto1, foto2, foto_prova e foto_prova2
$updateQuery = "UPDATE maglie SET foto1 = REPLACE(foto1, 'public/', '../'), foto2 = REPLACE(foto2, 'public/', '../'), foto_prova = REPLACE(foto_prova, 'public/', '../'), foto_prova2 = REPLACE(foto_prova2, 'public/', '../')";
if ($conn->query($updateQuery) === TRUE) {
echo "Testo sostituito con successo.";
} else {
echo "Errore nella sostituzione del testo: " . $conn->error;
}
include 'eliminapublic.php';
} else {
echo "Errore nell'inserimento del record: " . $conn->error;
}
}
$conn->close();
?>
poi ho una pagina che è la versione base della prima che ho postato e senza modifiche al css del form
<head>
....
<style>
.header-wrap-clone{
height: 100px!important;
}
</style>
</head>
......
<section id="content">
<div class="content-wrap">
<div class="container clearfix">
<div style="text-align: center;">
<h3 style="font-weight: bold;">Area Riservata</h3>
<p style="font-weight: bold;">Benvenuto, <?php echo $nome; ?>!</p>
</div>
<form action="aggiungi_record.php" method="post" enctype="multipart/form-data" target="_self">
<table align="center">
<tr>
<td><label for="stagione">Stagione:</label></td>
<td><input type="text" name="stagione" id="stagione"></td>
<td><label for="campionato">Campionato:</label></td>
<td>
<select name="campionato" id="campionato">
<option value="Champions League">Champions League</option>
<option value="Europa League">Europa League</option>
<option value="Serie A">Serie A</option>
<option value="Serie B">Serie B</option>
<option value="Serie C">Serie C</option>
<option value="Serie D">Serie D</option>
</select>
</td>
</tr>
<tr>
<td><label for="societa">Società:</label></td>
<td><input type="text" name="societa" id="societa"></td>
<td><label for="giocatore">Giocatore:</label></td>
<td><input type="text" name="giocatore" id="giocatore"></td>
</tr>
<tr>
<td><label for="match">Match:</label></td>
<td><input type="text" name="match" id="match"></td>
<td><label>Tempo di Gioco:</label></td>
<td>
<label for="tempo1"><input type="checkbox" name="tempo_di_gioco" id="tempo1" value="1" onclick="disableTempoCheckboxes(1)"> 1° T</label>
<label for="tempo2"><input type="checkbox" name="tempo_di_gioco" id="tempo2" value="2" onclick="disableTempoCheckboxes(2)"> 2° T</label>
</td>
</tr>
<tr>
<td><label>Maglia:</label></td>
<td>
<label for="maglia1"><input type="checkbox" name="maglia[]" id="maglia1" value="1" onclick="disableMaglieCheckboxes(1)"> 1°</label>
<label for="maglia2"><input type="checkbox" name="maglia[]" id="maglia2" value="2" onclick="disableMaglieCheckboxes(2)"> 2°</label>
<label for="maglia3"><input type="checkbox" name="maglia[]" id="maglia3" value="3" onclick="disableMaglieCheckboxes(3)"> 3°</label>
</td>
<td><label for="taglia">Taglia:</label></td>
<td><input type="text" name="Taglia" id="taglia"></td>
</tr>
<tr>
<td><label for="numero_maglia">Numero Maglia:</label></td>
<td><input type="text" name="numero_maglia" id="numero_maglia"></td>
<td><label for="portiere">Portiere:</label></td>
<td><input type="checkbox" name="portiere" id="portiere" value="1"></td>
</tr>
<tr>
<td><label for="descrizione">Descrizione:</label></td>
<td><input type="text" name="descrizione" id="descrizione" style="width: 200%;"></td>
</tr>
<tr>
<td><label for="particolarita">Particolarità:</label></td>
<td><input type="text" name="particolarita" id="particolarita" style="width: 200%;"></td>
</tr>
<tr>
<td><label for="foto1">Foto 1:</label></td>
<td><input type="file" name="foto1" id="foto1"></td>
<td><label for="foto_prova">Foto Prova:</label></td>
<td><input type="file" name="foto_prova" id="foto_prova"></td>
</tr>
<tr>
<td><label for="foto2">Foto 2:</label></td>
<td><input type="file" name="foto2" id="foto2"></td>
<td><label for="foto_prova2">Foto Prova 2:</label></td>
<td><input type="file" name="foto_prova2" id="foto_prova2"></td>
</tr>
<tr>
<td><label for="invendita">Maglia in vendita:</label></td>
<td><input type="checkbox" name="invendita" id="invendita" value="1"></td>
<td><label for="memorabilia">Memorabilia:</label></td>
<td><input type="checkbox" name="memorabilia" id="memorabilia"></td>
</tr>
</table>
<form id="aggiungiRecordForm" action="aggiungi_record.php" method="POST">
<div style="text-align: center;">
<button id="aggiungiRecordButton" type="submit">Aggiungi Record</button>
</div>
</form>
<?php
// Verifica se il parametro "message" è presente nell'URL
if (isset($_GET['message'])) {
$message = $_GET['message'];
echo '<div style="text-align: center; color: green; font-weight: bold;">' . $message . '</div>';
}
?>
</form>
</div>
</div>
</div>
</section><!-- #content end -->
Il problema è questo. Utilizzando la pagina BASE appena clicco su AGGIUNGI RECORD mi visualizza il messaggio corretto in verde (record aggiunto con successo) e mi esegue anche la pagina ftp_function.php correttamente.
Se invece uso la versione del form con gli “abbellimenti” in css (la prima che ho messo nel post) invece accade che se clicco su Aggiungi Record la pagina mi si FREEZA eseguendo il contenuto della pagina aggiungi_record.php e quindi aggiungendomi il record al db (tranne per ftp_function.php e non capisco il motivo) ma senza farmi vedere il messaggio RECORD AGGIUNTO CON SUCCESSO.
Cosa può essere secondo voi?