form con campo specifico obbligatorio

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
Salve a tutti,
mi auguro di riuscire a trovare qui un aiuto ai miei problemi.
Non sono una maga del web, e in php neppure scolara.

Ho un forum vb, ed è mia intenzione costruire dei contest, e per farlo in maniera efficace avrei bisogno di almeno uno script in php che mi consenta di fare quanto in oggetto, ovvero,
metto un esempio trovato in rete:

HTML:
<head><SCRIPT LANGUAGE="JavaScript">
function verifForm(formulaire)
  {
  if(formulaire.keypass.value == "")
    alert('il pass inserito non è corretto');
  else
    formulaire.submit();
}
</SCRIPT></head>

<body>
<form action="elabora.php" method="post">
<INPUT TYPE="text" NAME="keypass" SIZE=40>
<INPUT TYPE="button" VALUE="inserisci il pass" onClick="verifForm(this.form)">
</FORM>
</body>

questo esempio mi rimanda ad un pop up se lascio la casella di testo vuota, e mi rimanda ad una pagina qualora io ci inserisca qualunque cosa.
Quello che vorrei è che debba essere compilata con una parola ben precisa e che mi restituisca la frase "il pass inserito non è corretto" quando la digito errata e non solo quando la lascio vuota.

E' chiedere troppo? si può fare?
Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
puoi aggiungere una condizione in piu nella if :

HTML:
<head><script type="text/javascript">
    function verifForm(formulaire)
    {
// se è vuoto o è diverso da ... 
        if(formulaire.keypass.value == "" || formulaire.keypass.value != "quello che vuoi")
            alert('il pass inserito non è corretto');
        else
            formulaire.submit();
    }
    </script></head>

<body>
    <form action="elabora.php" method="post">
        <INPUT TYPE="text" NAME="keypass" SIZE=40>
        <INPUT TYPE="button" VALUE="inserisci il pass" onClick="verifForm(this.form)">
    </FORM>
</body>

però è poco sicuro

...

anzi

non è sicuro per niente
Troviamo un altra soluzione .. .
 
Ultima modifica:

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
a me sembra perfetto! :)

forse tu intendi che non è sicuro per via di codice malevolo che vi si può inserire, suppongo...
tieni presente che mi servirebbe solo per breve tempo e per la sola durata dei contest

in pratica userei la funzione degli "avvisi" di vbulletin per compilarlo, e visibile solo da determinate persone, ovvero a coloro che partecipano alla gara
è così pericoloso?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
criric ha ragione, qualsiasi controllo lato client è facilmente aggirabile, se poi il form ti serve o per inviarti email o inserire dati nel db il pericolo è notevole indipendentemente da quanto tempo lo tieni in linea.
dovresti prevedere dei controlli lato server
 

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
ciao, no niente di tutto quanto esposto.

anzi, al riguardo vorrei anche chiedere un'altra cosa, ovvero se ho la possibilità di glissare la pagina php esterna ma di inserire delle condizioni nello script.

tipo:
se è vuoto o diverso da... allora alert
se è corretto allora "ti mostro l'indizio per procedere"

come dicevo mi serve per effettuare dei contest, una specie di caccia al tesoro, e questo è solo temporaneo e non visibile a tutti

spero si capisca ciò che intento e che si possa fare
 

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
ho letto che si può utilizzare una pagina esterna ma anche no, mettendo il # al posto della pagina.
e quindi vedere tutto nella pagina del form senza cambi di pagina o altro
questo intendo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se vuoi fare tutto nella stessa pagina puoi mettere l'action="#" oppure action="", ma è meglio
PHP:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
o anche (ma a me piace meno)
PHP:
<form action="<?= htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Metti i controlli in una pagina esterna, richiamala tramite ajax, e stampa sul client (anche come allert) gli errori di essa, se non ricevi output
vuol dire che non ce ne sono e continui, cosi non possono aggirarla dato che il js fa solo da 'mediatore'
 

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
ciao
se vuoi fare tutto nella stessa pagina puoi mettere l'action="#" oppure action="", ma è meglio
PHP:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
o anche (ma a me piace meno)
PHP:
<form action="<?= htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">

ricapitolando:

HTML:
<head><script type="text/javascript">
    function verifForm(formulaire)
    {
// se è vuoto o è diverso da ... 
        if(formulaire.keypass.value == "" || formulaire.keypass.value != "quello che vuoi")
            alert('il pass inserito non è corretto');
        else
            formulaire.submit();
    }
    </script></head>

<body>
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
        <INPUT TYPE="text" NAME="keypass" SIZE=40>
        <INPUT TYPE="button" VALUE="inserisci il pass" onClick="verifForm(this.form)">
    </FORM>
</body>

questo il codice fino a qui. Ora, per far si che, digitando la parola corretta compaia nella stessa finestra del form il risultato, come si dovrebbe procedere?

cioè... quell':

else
formulaire.subimt()
dovrebbe contenere dell'altro? e se si come messo?

@Nefyt
mi spiace ma non ti seguo nel ragionamento, troppo complicato per me :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima una domanda: ogni utente ha la sua pass o è unica per tutti?
poi al pulsante dagli il name
HTML:
<input type="button" value="inserisci il pass" name="pinco" onClick="verifForm(this.form)">
poi scrivi i tag in minuscolo
la pag unica schematicamente è così

PHP:
<!-- parte head ecc-->
<?php
if(isset($_POST['pinco'])){
//e qui fai tutto quello che devi fare
}
?>
<!-- il resto dell'html compreso il form -->

ricordati che la pagina deve avere estenzione .php non .htm o .html
 

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
si, il pass è unico per tutti, almeno così pensavo, poiché tanto il tutto è poi vincolato ad altre cose, il pass serve solo per poter accedere al livello successivo e per essere certi che non si siano saltati i passaggi.

Per il resto invece ora ho delle perplessità, perché come dicevo all'inizio utilizzerei gli "avvisi" forniti dal vbulletin
Non so se hai presente ma penso di si, e questi pescano solo l'html.
Nel metodo originario, ovvero rimadare ad una pagina php esterna, almeno nei test funzionava, invece così, essendoci anche codice php specifico che richiede anche l'estensione immagino che non funzionerà

Provo, ma ho scarsa fiducia...

eventualmente dovresti essere tanto gentile da fornirmi l'alternativa
 

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
allora, non sono sicura di aver capito bene.

HTML:
<!-- parte head ecc-->
<head>
<?php
if(isset($_POST['pinco'])){
//e qui fai tutto quello che devi fare
<script type="text/javascript">
    function verifForm(formulaire)
    {
// se è vuoto o è diverso da ... 
        if(formulaire.pinco.value == "" || formulaire.pinco.value != "pass")
            alert('il pass inserito non è corretto');
        else
            formulaire.submit();
	}
    </script>
}
?>
</head>
<!-- il resto dell'html compreso il form -->

<body>
   <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
        <input type="text" name="pinco" size=40>
        <input type="button" value="inserisci il pass" name="pinco" onClick="verifForm(this.form)">
		    </form>
	
	<div>resto dell'html </div>
</body>
e così non funziona neppure in locale, ovviamente la pagina si chiama pagina.php

tantomeno se la uso in vbulletin, e in questo caso dovrei ritornare alle origini utilizzando invece la pagina esterna, in qesto modo:

HTML:
<!--pagina interna al vbulletin "gli avvisi" -->
<script type="text/javascript">
    function verifForm(formulaire)
    {
// se è vuoto o è diverso da ... 
        if(formulaire.pinco.value == "" || formulaire.pinco.value != "pass")
            alert('il pass inserito non è corretto');
        else
            formulaire.submit();
	}
    </script>
</head>
<body>
   <form action="pagina.php" method="post">
        <input type="text" name="pinco" size=40>
        <input type="button" value="inserisci il pass" name="pinco" onClick="verifForm(this.form)">
		    </form>
</body>

PHP:
<!--pagina esterna al vbulletin buttata nella root -->
<div>tutto il resto che mi serve si legga dopo aver compilato il form </div>

il punto è che la pagina non me la carica
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
hai fatto un po' di confusione
invece di perderti con js, prova questo chiama la pag pagina.php e provala, evidentemente modificando i nomi di dove vuoi andare
leggi i commenti
PHP:
<?php
ob_start();//prima del tag <?php NON deve esserci nemmeno uno spazio
if(isset($_POST['pallo'])){
	$password="abracadabra";//o quella che vuoi, basta che tu modifichi abracadabra
	//se vuoi avere alcune (non troppe) password diverese senza ricorrere ad un db, il tutto si può leggermente modificare
	if($_POST['pinco']==$password){//la password inserita è uguale alla richiesta
		header("location:pagina_che_vuoi.php");//qui metti il nome della pag a cu vuoi andare, io ho messo php, ma può essere html o htm
		//comunque verifica i percorsi es "location:cartella/pagina_che_vuoi.php"
		exit();
	}else{//la password è errata
		header( "refresh:4;url=altra_pagina_che_vuoi.php" ); //potrebbe essere il nome di questa pagina pagina.php
		echo "<b>non hai inserito la password, o password errata</b><br />tra 4 secondi sarai reindirizzato a altra_pagina_che_vuoi";
	}
}else{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>inserimento password</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
	inserisci password: <input type="text" name="pinco" size=40><br />
	<!--i due campi di input DEVONO avere nomi diversi, altrimenti come fa lo script a riconoscerli-->
	<input type="submit" value="inserisci il pass" name="pallo">
</form>
<!-- qui potresti mettere un link in modo che l'utente possa uscire-->
</body>
</html>
<?php
}
ob_end_flush();
?>
edit
ho messo submit al posto di button
 
Ultima modifica:

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
può essere che ci sia un errore? a video vedo questo (in locale)

script.jpg
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
l'ho riverificato e mettendo nomi di mie pagine funzia.
probabilmente facendo il copy/paste hai tralasciato qualcosa.
posta esattamente il codice che ti da quell'errore
 

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
Devo dire che tutto il concetto mi è molto estraneo, quindi se anche faccio io degli errori faccio fatica ad individuali. Comunque ecco il codice, controllato gli spazi e tutto il resto
dal mio punto di vista è correto :) poi non so

PHP:
<?php
ob_start();//prima del tag <?php NON deve esserci nemmeno uno spazio
if(isset($_POST['pallo'])){
    $password="abracadabra";//o quella che vuoi, basta che tu modifichi abracadabra
    //se vuoi avere alcune (non troppe) password diverese senza ricorrere ad un db, il tutto si può leggermente modificare
    if($_POST['pinco']==$password){//la password inserita è uguale alla richiesta
        header("location:doc/forum/contest1.php");//qui metti il nome della pag a cu vuoi andare, io ho messo php, ma può essere html o htm
        //comunque verifica i percorsi es "location:cartella/pagina_che_vuoi.php"
        exit();
    }else{//la password è errata
        header( "refresh:4;url=pagina.php" ); //potrebbe essere il nome di questa pagina pagina.php
        echo "<b>non hai inserito la password, o password errata</b><br />tra 4 secondi sarai reindirizzato a altra_pagina_che_vuoi";
    }
}else{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>inserimento password</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
    inserisci password: <input type="text" name="pinco" size=40><br />
    <!--i due campi di input DEVONO avere nomi diversi, altrimenti come fa lo script a riconoscerli-->
    <input type="submit" value="inserisci il pass" name="pallo">
</form>
<!-- qui potresti mettere un link in modo che l'utente possa uscire-->
</body>
</html>
<?php
}
ob_end_flush();
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non vedo errori nemmeno io. per sicurezza ho fatto un copy/paste di quello che hai postato (cambiando solo i nomi delle pagine a cui vai) e non mi da quell'errore che hai postato, funziona correttamente.
non capisco
 

Kara Starbuck

Nuovo Utente
22 Lug 2012
17
0
0
utilizzo firefox per aprirlo, se lo provo in chrome mi fa vedere solo il codice
forse è qui l'errore mio?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ecco dove è l'inghippo: le pagine dinamiche (php, asp..) non si possono aprire direttamente col bw (una pag html si apre col doppio clic sul nome o con apri file del bw)
per vederle in locale devi avere un server locale e php, tra l'alrto (se non ho capio male) usi vbiulletin quindi in locale dovresti avere il server.
dovresti digitare nella barra del bw http://localhost:8080/pagina.php o simile
 
Discussioni simili
Autore Titolo Forum Risposte Data
L come passare il campo allegato dal file html al fiel php per spedirlo con un form PHP 12
M processare un form con campo testo e radio button PHP 4
M campo ordine da modificare con form PHP 2
M Interazione tra un più campi di un form con un solo campo di database - query mysql PHP 2
S passare un valore da un form a un file .php con metodo post PHP 4
I Form con selettore HTML e CSS 0
G form invio multiplo con checkbox PHP 12
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
G Invio form con PHP PHP 3
M Problema con controllo form in real time jQuery 6
M form con checkbox PHP 8
F query e form con select multipla PHP 17
W Rinominare Documenti Con Form Asp Classic ASP 9
S [PHP] Recupero nome immagine da Form con input file PHP 3
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
Domenico_Falco1 [Javascript] [HTML] Campi form con sfondo imposto dal browser Javascript 5
E Form inserimento dati con JavaScript Javascript 0
I [PHP] inviare form con allegato tramite una mail PHP 1
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
M [HTML] form con multipli input type image HTML e CSS 1
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
U [PHP] Form stessa pagina con qualche complicazione PHP 0
S [PHP] form con metodo get e recupero id PHP 4
michela90 [PHP] Refresh page on submit - Form con Swiftmailer PHP 14
Emix Problema con creazione form css/mobile HTML e CSS 3
G [PHP] FORM INVIO VALORI A QUERY CON TRE CONDIZIONI PHP 2
L Scelta form con jquery jQuery 1
F [PHP] Validare form prenotazione appuntamento tattoo con upload image PHP 0
S Html con form e action .php PHP 6
bubino8 [PHP] Auto Submit form con dati PHP 7
W Consiglio su gestione di un form con XMLHttpRequest Ajax 0
Matteo Lorenzon [PHP][WORDPRESS] Form in Wordpress, creazione PDF con dati del form ed invio tramite email WordPress 1
T [Javascript] un form con select dinamica che funzioni da menù... Javascript 2
zammaeng [PHP] Problema form con lista PHP 8
B INSERIRE DATI CON IMMAGINE DA FORM IN MYSQL MySQL 7
V [PHP] Form con elenco a tendina con dati DB PHP 20
A [HTML] form con campi dinamici. HTML e CSS 1
asevenx [PHP] form con select che non invia dati se con apostrofo PHP 4
SimooRu [PHP] Non riesco a far passare i dati con i form PHP 4
S [PHP] Form iscrizione senza DB con comandi deprecated PHP 10
Fuego2806 Stampare dati Form su immagine di sfondo con html HTML e CSS 1
Fuego2806 [PHP] Stampare dati Form su immagine di sfondo con html PHP 70
C [PHP] Upload immagine in un form con target _blank: non funziona PHP 7
G validazione form con div tipo alert jQuery 0
M form php con checkbox PHP 4
D form php con chapta PHP 1
I Form/aree di testo con input da lista di nomi!Chiedo aiuto!! HTML e CSS 3
P invio mail da form con dati php PHP 7
P PHP mailer invio form con 2 allegati. PHP 3
M Form multipagina con campi già compilati se presenti PHP 5

Discussioni simili