Azione mostra/nascondi dopo il verificarsi di una determinata azione

applefriend

Nuovo Utente
9 Set 2015
3
0
0
Salve, premetto che sono un neofita di php/css/html/javascript. Nonostante ciò, ho provato e smanettato per un bel pò di tempo al fine di raggiungere una soluzione, ma non sono riuscito a combinare nulla.
Ho realizzato una pagina opportunamente modificata da me prendendo un template già fatto, ho necessita che questo template con una home, abbia un bottone che riguardi l'amministrazione, (l'idea era un sito di ricette, che inviate opportunamente dagli utenti, vengono successivamente convalidate dall'admin). Ecco appunto cliccando sul pulsante ho creato la videata (phpmyadmin mi è stato amico) insomma sono riuscito ad arrivare fin qui.
Ora iniziano i problemi, praticamente all'inserimento della password, vorrei far comparire un form per cancellare una data ricetta, purtroppo non riesco proprio a capire come fare. Ossia il form per cancellare la richiesta, si presenta ancora prima di inserire la password in questo modo chiunque (anche non admin) può cancellare ricette a suo piacimento, e ovviamente questo non mi va bene.
Ecco a voi il codice, se riuscite a dirmi come nascondere/visualizzare il form della cancellazione, vi sarò grato.
Codice:
<!DOCTYPE php>
<html lang="it">
    <head>
        <title>#FoodArt | Pannello Admin</title>
		<meta charset="UTF-8" />
        <meta name="description" content="#FoodArt | L'arte in cucina" />
        <meta name="keywords" content="cibo,food,art,mangiare,piatti,pranzo,cena,pasto" />
		<meta name="author" content="Genco Antonello & Nicola Farella" />
        <link rel="stylesheet" type="text/css" href="css/style.css" />
		<link rel="stylesheet" type="text/css" href="css/sbimenu.css" />
		<link href='http://fonts.googleapis.com/css?family=PT+Sans+Narrow' rel='stylesheet' type='text/css' />
		<link href='http://fonts.googleapis.com/css?family=News+Cycle&v1' rel='stylesheet' type='text/css' />
		 <script type="text/javascript">
			function mostra() {	 
			document.getElementById("videata1").style.display="block";
			document.getElementById("videata").style.display="none";
		}
		</script>
	
    </head>
	
<body>
	
	<div class="header">
				<h1>#FoodArt | Pannello Admin <span> Antipasti, primi, secondi e dessert</span></h1>
			
			</div>
 	
	<h2 id="videata">
	<form action="#" method='POST'>
		<p>Inserisci password amministratore: </p> <input type="password" name="pass1" required id="password"/>
		<p><input type="submit" class="submit" /></p>
		<p><input type="reset" class="clear" /></p>
	</form>
	</h2>
	
	<h2 id="videata1">
		<form action="Lista.php" method="post"> 
			<h2>Elimina Ricetta Nro: </h2>
			 <input type="text" name="Nro" required maxlength='3'/></p>
			<br>
			<p><input type="submit" class="submit" /></p>
			<p><input type="reset" class="clear" /></p>
		</form>
	</h2>
	
	
	<?php 
			if(isset($_POST['pass1'])){
				//In base alla password inserita cambiano gli elementi visualizzati
				$connessione = new mysqli("localhost","root","", "FoodArtDB");
				$query1 = "SELECT Password FROM Login WHERE Password='" . $_POST['pass1'] . "'";
				$risultati1 = mysqli_query($connessione, $query1);
				$num=mysqli_num_rows($risultati1);
				if ($num != 0){
					echo "Errore, la password inserita non e' corretta";
				} else {
					echo "Hai effettuato l'accesso come amministratore.";
						?>
						<script type="text/javascript"> mostra(); </script>
						<?php			
				}	
			}
		?>
		<br><br>
		<button onclick="location.href='Home.html'">Torna Al Menu Principale</button>
	
		
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
		<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
		<script type="text/javascript" src="js/jquery.bgImageMenu.js"></script>
		<script type="text/javascript">
			$(function() {
				$('#sbi_container').bgImageMenu();
			});
		</script>
    </body>
</html>
 
Ciao, è normale il funzionamento... Per fare quello che dici, la password deve servire per l'accesso ad un'area privata che all'interno contiene gli strumenti di amministrazione.
Per far questo devi costruire una pagina visibile solo se il login è "TRUE" e la sessione è avviata, quindi una pagina di controllo dei dati di accesso e l'avvio della sessione.
 
Come suggerito giustamente da @filomeni, dovresti leggerti qualcosa sulle SESSIONI PHP. Sono semplici da utilizzare, e ti permettono di ottenere quello che desideri.


Saluti.
G.G.
 
Come suggerito giustamente da @filomeni, dovresti leggerti qualcosa sulle SESSIONI PHP. Sono semplici da utilizzare, e ti permettono di ottenere quello che desideri.


Saluti.
G.G.

Grazie mille, li sto guardando da un pò e sto cercando di modificare il codice ma ho bisogno di una mano a livello concettuale. Voglio prima mettere in chiaro le idee e poi cercare di operare.
Ho eliminato gli script javascript, ho lasciato la pagina esclusivamente il form login il controllo della password e il bottone per tornare indietro alla home, ora mi concentro sul codice:
HTML:
<h2>
	<form action="#" method='POST'>
		<p>Inserisci password amministratore: </p> 
                <input type="password" name="pass1" required id="password"/>
		<p><input type="submit" class="submit" /></p>
		<p><input type="reset" class="clear" /></p>
	</form>
	</h2>

la password la controllo dal database quindi piu sotto scrivo così:

PHP:
<?

if(isset($_POST['pass1'])){
				
				$connessione = new mysqli("localhost","root","", "FoodArtDB");
				$query1 = "SELECT Password FROM Login WHERE Password='" . $_POST['pass1'] . "'";
				$risultati1 = mysqli_query($connessione, $query1);
				$num=mysqli_num_rows($risultati1);
				if ($num != 0){
					echo "Errore, la password inserita non e' corretta";
					header("Location: form.htm");

				} else {
					echo "Hai effettuato l'accesso come amministratore.";
					session_start();
						$_SESSION['login'] = "ok";

ora non capisco cosa sbaglio infatti inserisco anche:

PHP:
session_start();
if ($_SESSION['login'] != "ok") {
	header("Location: eliminaricetta.html");

}

e poi se la password è corretta vorrei far comparire il form per eliminare una ricetta dal database quindi vorrei far comparire questo : (quest'ultimo frammento lo inserisco in un altra pagina html di nome eliminaricetta.html)

HTML:
<h2>
		<form action="Lista.php" method="post"> 
			<h2>Elimina Ricetta Nro: </h2>
			 <input type="text" name="Nro" required maxlength='3'/></p>
			<br>
			<p><input type="submit" class="submit" /></p>
			<p><input type="reset" class="clear" /></p>
		</form>
	</h2>

Cos'è che non va?qualcuno riesce a darmi una mano?
 
Attualmente sono dal telefonino, e non riesco a verificare correttamente se ci sn errori.
Ma forse c'è una cosa che posso aggiungere per aiutarti a risolvere.
Te lo spiego in linea di principio, credo che riuscirai a farlo solo, altrimenti domani con il pc vedo di controllarlo.
Allora, una volta che verifichi la pass ( che comunque ti conviene criptare almeno in sh1 o altri metodi, anche questo molto semplice )
Nelle pagine che vuoi tenere con accesso riservato devi comunque inserire un if che verifica la presenza della sessione attiva, ed in base al fatto che esista o meno ti fa accedere o non accedere.
Quindi ricapitolando:
1) fai il login
2) effettuato il login con successo crei la sessione
3) nelle pagine che vuoi criptare inserisci un if che se la sessione è aperta visualizza il contenuto altrimenti ti reindirizza altrove.


Saluti.
G.G.
 
Il primo errore è sulla comparazione della password, la variabile recuperata "pass1" devi vedere l'ugualianza con la pws in db
PHP:
if($pass1===$password)
{
//qui crei sessione e redirect sull'area privata
}
else{//crei il redirect su pagina errore}
 
Vorrei capire come mai il form non funziona come deve:
Ciao ho bisogno di capire, perché questo form non funziona più sul sito

<form
action="http://FormMail.aruba.it/cgi-bin/FormMail.pl " method="post"
style="background-repeat: no-repeat; background-position: center top;"
>
<div align="center">
<input name="subject" value="Contatto sito" type="hidden" />
<input name="recipient" type="hidden" value="[email protected]" />
<input name="env_report"
value="REMOTE_HOST,HTTP_USER_AGENT" type="hidden" />
<input
name="redirect" value="" type="hidden" />
<table class="contatto">
<tr>
<td class="colonna1">Name*</td>
<td class="colonna2"><input name="nome" type="text" id="nome" size="20" maxlength="25" /></td>
<td class="colonna1">Surname*</td>
<td class="colonna2"><input name="cognome" type="text" id="cognome" maxlength="50" /></td>
</tr>
<tr>
<td class="colonna1">Company</td>
<td class="colonna2"><input name="azienda" type="text" id="azienda" maxlength="25" /></td>
<td class="colonna1">Adresse</td>
<td class="colonna2"><input name="indirizzo" type="text" id="indirizzo" maxlength="50" /></td>
</tr>
<tr>
<td class="colonna1">City*</td>
<td class="colonna2"><input name="città" type="text" id="città" maxlength="25" /></td>
<td class="colonna1">Postal code</td>
<td class="colonna2"><input name="cap" type="text" id="cap" maxlength="50" /></td>
</tr>
<tr>
<td class="colonna1">Email*</td>
<td class="colonna2"><input name="email" type="text" id="email" maxlength="50" /></td>
<td class="colonna1">Telephone*</td>
<td class="colonna2"><input name="telefono" type="text" id="phone" maxlength="50" /></td>
</tr>
<tr>
<td class="colonna1">Notes</td>
<td colspan="3" class="colonna2"><textarea name="note" id="note" cols="70" rows="5"></textarea></td>
</tr>
<tr>
<td colspan="3" class="colonna1">In accordance with art.13 of D.LGS n. 196/2003 protecting personal data with Rule 193/2003 on the handling of personal data*</td>
<td class="colonna2"><input type="checkbox" name="autorizzazione" id="autorizzazione" value="si" /></td>
</tr>
<tr>
<td class="colonna1"></td>
<td class="colonna2"><input type="submit" name="button" id="button" value="Send" /></td>
<td class="colonna1"><input type="reset" name="cancella" id="cancella" value="Delete" /></td>
<td class="colonna2"></td>
</tr>
<tr>
<td colspan="4" class="colonna1">*Required fields</td>
</tr>
</table>
</div>
</form>

Il modulo per l'invio dei dati risiede su http://www./contact.html, e non è consentito l'accesso da domini che non usino il servizio di hosting su cui risiede il formail.

Hai qualche form che tu sappia, che funziona senza script?
 

Discussioni simili