problema con form

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
Salve a tutti,
esiste tra voi qualche anima pia che può dare una scorsa ai pezzi in php che posto per capire dove sia il problema? Io non capisco un H di php e quanto segue è stato scritto da un amico al quale non posso fare nuovamente ricorso.

Sono 3 file, il primo contiene il form, il secondo ("sezioni.php") contiene la funzione che viene richiamata dal primo e l'ultimo ("formprenotazioni_execute") serve a connettersi al server che contiene il database e eseguire le varie operazioni di fornitura e richiesta dati. Tutti e tre i file risiedono nella stessa cartella, il nome del server è quello fornito da register e i dati dell'utente sono quelli di un utente con tutti i permessi creato appositamente da me.

Quello che fa "l'Infame" lo potete vedere al seguente indirizzo http://www.bunkersoratte.it/provaform/formprenotazioni.php
Non mi trova la funzione conta()?? Non si connette al server? Che vuole da me??

Parte php del file con il form:

PHP:
<?php require "sezioni.php";?>
<body>

    <td width="80%" align="center" valign="top"><table align="center" valign="center">       
       <tr><td colspan="2"> <? if (conta() > 0){
	echo "<tr><td colspan='2'><p><font color='red'>Riempire i seguenti campi per prenotare:</font></p><p></p><p><font color='red' family-font: Century Ghothic; >Sono disponibili"; conta();> echo "posti. </font></p></td></tr>";
           echo " <tr><td></td><td></td></tr>
            <form method='post' action='formprenotazioni_execute.php'>
             <tr><td align='center'><p><font color='red'>Nome:</font></p></td><td><input type='text'  name='nome' ></input></td></tr>
             <tr align='center'><td><p><font color='red'>Cognome:</font></p></td><td><input type='text'  name='cognome' ></input></td></tr>
		     <tr align='center'><td><p><font color='red'>Indirizzo:</font></p></td><td><input type='text'  name='indirizzo' ></input></td></tr>
		     <tr align='center'><td><p><font color='red'>Telefono:</font></p></td><td><input type='text'  name='telefono' ></input></td></tr>
		     <tr align='center'><td><p><font color='red'>Email:</font></p></td><td><input type='text'  name='mail' ></input></td></tr>
		     <tr align='center'><td><p><font color='red'>Numero di persone:</font></p></td><td><input type='text' name='persone' ></input></td></tr>
    
             <tr><td></td><td></td></tr>
             <tr align='right'><td colspan='2'>
             <p align='center'><input type='submit' method ='post' name ='prenota' value='Prenota'></input></p></tr>
             </form>
             </table>
             </td>";
       }else{
       	echo "<tr></tr><tr><td colspan='2'><div><p><font color='red'>Spiacenti, Non e' piu' possibile prenotare.Sarete ricontattati al piu' presto.</font></p></div></td></tr><tr></tr>";
       }?>

La funzione conta() del file sezioni

PHP:
function conta()
{
	$connessione = mysql_connect("nomehosting.register.it","nomeutente","password")or die("Connessione non riuscita: " . mysql_error());
	mysql_select_db("nomedatabase",
		$connessione) or die("Errore nella selezione del database");
	$query = "SELECT  sum(persone) FROM utenti ; "; 
	$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
	$occupati = $row['sum(persone)'];
		$disponibili = (50 - $occupati);
	echo "$disponibili";	
}
return $disponibili;
}

e la parte php del file formprenotazioni_execute

PHP:
<?php
require "sezioni.php";
$persone = $_POST['persone']; 
$telefono = $_POST['telefono'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$indirizzo = $_POST['indirizzo'];
$email = $_POST['mail'];
$data = (strftime ("%A %d %B %Y %H:%M"));
$condizione = conta();
$connessione = mysql_connect("nomehosting.register.it","nomeutente","password")or die("Connessione non riuscita: " . mysql_error());
mysql_select_db("nomedatabase",
	$connessione) or die("Errore nella selezione del database");

/*if ($query==FALSE) die("errore nella composizione della query");*/
$tipo = gettype ($persone);

if ($persone <= $condizione){
	if ($persone <> "" and $nome <> "" and $cognome <> "" and $indirizzo <> "" and $email <> "" and $telefono <> ""  )
{
	
	
	
		$query = mysql_query("INSERT INTO utenti (nome,cognome,indirizzo,mail,telefono,persone,data) VALUES ('$nome','$cognome','$indirizzo','$email','$telefono','$persone','$data'); " ,$connessione);
		
		$esitoprenotazione = "Prenotazione avvenuta con successo! <a href ='index.php'>Torna alla Home Page</a>.";

	}else{
		$esitoprenotazione = "Prenotazione Fallita! <a href ='formprenotazioni.php'>Torna indietro</a> e riempi correttamente tutti i campi.";
		
	}
}else{
	$esitoprenotazione = "Hai inserito un numero di persone eccessivo. <a href ='formprenotazioni.php'>Torna indietro</a> e riempi correttamente tutti i campi.";
}
mysql_close($connessione);

?>
Ovviamente ho cancellato i dati di sever e utente :) e ovviamente, il database con la tabella 'utenti' e i campi come sopra descritti è stata creata.
Spero di non aver fatto danno a scrivere 2000 righe!!

Please! Qualcuno ha la pazienza di trovare il problema?? Sono una finta-webmaster a fin di bene! Non mi danno un euro!

Grazie!!
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
invece che <?
usa <?php

PHP:
<?php if (conta()

dovresti risolvere
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ora che vedo meglio modifica anche questa:

PHP:
Sono disponibili"; conta();> echo "posti.

con

PHP:
Sono disponibili" . conta() . "posti.
 

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
Intanto infinitamente grazie! Non credevo che qualcuno mi avrebbe risposto così rapidamente :D e leggendosi tutto quel macello...

Ho provato a fare le prove che mi dicevi, putroppo il risultato non cambia :(

E' corretto che i file siano solo tutti nella stessa cartella perchè possano essere richiamati? Non so, magari è quello...
Sembra scambiare la funzione conta() per testo puro... perchè??? :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Sembra scambiare la funzione conta() per testo puro... perchè???
Perche la sintassi di questa riga è sbagliata
PHP:
 echo "<tr><td colspan='2'><p><font color='red'>Riempire i seguenti campi per prenotare:</font></p><p></p><p><font color='red' family-font: Century Ghothic;>Sono disponibili"; conta();> echo "posti. </font></p></td></tr>";

gli apici non sono al posto giusto

deve diventare piu o meno cosi:

PHP:
echo "<tr><td colspan='2'><p><font color='red'>Riempire i seguenti campi per prenotare:</font></p><p></p><p><font color='red' >Sono disponibili" . conta() . "posti. </font></p></td></tr>";

anche questo è sbagliato e intanto l'ho tolto:
PHP:
family-font: Century Ghothic;

al massimo puoi inserire questo nel tag font

PHP:
style="font-family:'Century Ghothic'"
 

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
E se non fosse quello :(

Ho modificato la scrittura come mi hai detto, ma il risultato non cambia... lo puoi vedere al link che ho segnato prima perchè li edito con un compilatore e lo salvo direttamente on line. Ho tolto la descrizione del font che per ora non mi interessa.

Di nuovo grazie, se hai altre ipotesi sono qua.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
@ciric
diamoci un occhio insieme, a me sembra che ci siano diversi svarioni (a parte che è scritto un po' incasinato), senza contare (cosi a lume di naso) che gli input siano senza alcun controllo e dovendo essere inseriti in un db c'è il grosso rischio di injection.
domani comincio a darci un occhio anch'io

dimenticavo
sempre x ciric: anche tu stahìkanovista?
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
@Borgo
si in effetti mi ero limitato a guardare solo la riga dell'errore, un po tutto il codice è incasinato, stahìkanovista?:confused:


@_Ania
ho visto il link... strano!

prova cosi, sempre per quella riga
PHP:
echo "<tr><td colspan='2'><p><font color='red'>Riempire i seguenti campi per prenotare:</font></p><p></p><p><font color='red'>Sono disponibili ";
conta();
echo "posti. </font></p></td></tr>";
 

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
Ragazzi infinitamente grazie!! Lo so che il codice è incasinato, me ne accorgo pure io che sono una totale ignorante :)

Io putroppo so giusto qualche cosetta di html e ora mi trovo in mano questo megaproblema che non so gestire...

Se avete tempo di darmi qualche dritta o di dare una raddrizzata al codice...GRAZIE!!
 

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
x criric

Aimeh, avevo già provato da sola questa soluzione, ma per sicurezza o riprovato ora...sostituendo il tuo testo... niente da fare.

Mi sa che il problema è più "articolato"...

Ari-grazie.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Riaggiornando il tuo link ho notato che sei tornata indietro

se metti uno sfondo bianco noterai che tutto il codice php non viene eseguito ma stampato

questo probabilmente è dovuto al tag di apertura php

assicurati intanto che ovunque ci sia scritto <?php invece che <?
 

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
criric, perdono, non mi sono accorta della tua risposta.
La leggo solo ora...
Ho tolto lo sfondo nero. Effettivamente c'è stampata altra roba, non me ne ero accorta! Sono un macello...

E' anche peggio di come pensassi! :crying:

Mi genera il form, tutto bello tranquillo e poi mi sputa fuori pezzi di codice??

Cmq si, ho sostituito il testo come mi avevi detto. Lo riposto:

<?php if (conta() > 0){
echo "<tr><td colspan='2'><p><font color='red'>Riempire i seguenti campi per prenotare:</font></p><p></p><p><font color='red'>Sono disponibili ";
conta();
echo "posti. </font></p></td></tr>";
echo " <tr><td></td><td></td></tr>
<form method='post' action='formprenotazioni_execute.php'>
<tr><td align='center'><p><font color='red'>Nome:</font></p></td><td><input type='text' name='nome' ></input></td></tr>
<tr align='center'><td><p><font color='red'>Cognome:</font></p></td><td><input type='text' name='cognome' ></input></td></tr>
<tr align='center'><td><p><font color='red'>Indirizzo:</font></p></td><td><input type='text' name='indirizzo' ></input></td></tr>
<tr align='center'><td><p><font color='red'>Telefono:</font></p></td><td><input type='text' name='telefono' ></input></td></tr>
<tr align='center'><td><p><font color='red'>Email:</font></p></td><td><input type='text' name='mail' ></input></td></tr>
<tr align='center'><td><p><font color='red'>Numero di persone:</font></p></td><td><input type='text' name='persone' ></input></td></tr>

<tr><td></td><td></td></tr>
<tr align='right'><td colspan='2'>
<p align='center'><input type='submit' method ='post' name ='prenota' value='Prenota'></input></p></tr>
</form>
</table>
</td>";
}else{
echo "<tr></tr><tr><td colspan='2'><div><p><font color='red'>Spiacenti, Non e' piu' possibile prenotare.Sarete ricontattati al piu' presto.</font></p></div></td></tr><tr></tr>";
}?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ho notato che tutto il sito è in html

sei sicura di avere il supporto per php sul tuo hosting?

hai altre pagine in php?
 

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
Ok, questo dimostra la mia totale ignoranza e inadeguatezza...
Ovviamente, quando ho fatto la richiesta per l'hosting non mi sono assolutamente posta il problema di capire quale fosse meglio tra l'hosting linux e quello windows... e ovviamente, sentendomi più a casa con windows, ho scelto quello... sarò cretina?? :eek:
Ora leggo le faq e scopro che l'hosting windows supporta .asp e . net mentre il linux è specifico per i php.
Ora potete anche picchiarmi telematicamente se volete...
Va beh, se ti sei girato un pò il sito avrai capito che è una cosa molto arraffazzonata... io studio ingegneria edile... non so un tubo di questa roba...
Ora vedo se riesco ad attivare l'altro e provo a farcelo girare. Poi vi dico.

Intanto grazieeeeeeeeeeeeeee!!!!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
forse puoi semplicemente aggiornarlo tenendoti windows

ciao
 

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
OK, allora, incredibilmente sull'hosting linux che supporta il php il form funziona!!! Strano vero?? 0:)
Sono una schiappa...

Detto ciò:
il php genera un bel form e la funzione che conta i posti liberi funziona perfettamente,

http://www.bunkersoratte.it/form/formprenotazioni.php

come vedete indica 30 posti (il conteggio è 50 meno quelli che prenotano e io ho inserito a mano 20 posti nel database).

L'unica cosa che non funziona è che sembra non raccogliere i dati che fornisco...

Ora ci litigherò... Intanto criric mi hai salvato!! stavo diventando matta!

x borgo italia: rifarlo??? sarebbe bellissimo! ma forse non mi sono spiegata tanto bene... non sono capace!!! ringrazio di avere questo a disposizione e me lo tengo stretta! :) Però se avete consigli per pulire il codice ditemi pure!

Grazie ragazzi!!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Beh sei stata brava e veloce!

se avete consigli per pulire il codice ditemi pure!

comincerei dalla sicurezza come suggerisce borgo

potresti aggiungere una funzione nel file sezione.php che si occuperà di ripulire le stringhe prima di inserirle nel database

funzione suggerita da Alessandro in questo post http://forum.mrwebmaster.it/php/29239-funzione-equivalente-get_magic_quotes_gpc.html

sezioni.php aggiungiamo la funzione protect()

PHP:
function conta() {
    $connessione = mysql_connect("nomehosting.register.it", "nomeutente", "password") or die("Connessione non riuscita: " . mysql_error());
    mysql_select_db("nomedatabase", $connessione) or die("Errore nella selezione del database");
    $query = "SELECT  sum(persone) FROM utenti ; ";
    $result = mysql_query($query) or die(mysql_error());

    while ($row = mysql_fetch_array($result)) {
        $occupati = $row['sum(persone)'];
        $disponibili = (50 - $occupati);
        echo "$disponibili";
    }
    return $disponibili;
}

function protect($string) {
    $string = strip_tags($string);
    $string = htmlentities($string);

    if (function_exists('get_magic_quotes_gpc') && !get_magic_quotes_gpc()) {
        $string = addslashes($string);
    }

    return $string;
}

nel file formprenotazioni_execute.php la richiami prima di valorizzare le variabili
PHP:
require "sezioni.php";

foreach ($_POST as $key => $value) {
    $_POST[$key] = protect($value);
}

$persone = $_POST['persone'];
$telefono = $_POST['telefono'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$indirizzo = $_POST['indirizzo'];
$email = $_POST['mail'];

ripulisci con un ciclo tutti i dati che ti arrivano dalla form

Non ho testato, lascio a te l'onore

buon lavoro

avevo sbagliato nel foreach, ho modificato
 
Ultima modifica:

_Ania

Utente Attivo
8 Apr 2012
31
0
0
Roma
A parte il fatto che a questo punto vi siete meritati un ringraziamento a fondo pagina nel form di prenotazioni (che onore eh?)...

Io ormai appiccico nel codice tutto quello che mi dite, ma posso capire a cosa servono queste cose? Le ho messe, ma non è cambiato nulla. Mi pare di capire che serva ad evirare errori in compilazione del form e dato che il form, per ragioni che ancora non mi spiego, continua a non inviare dati al database ( ci interagisce solo in lettura ma non in scrittura) immagino che per ora non ne posso vedere gli effetti giusto?

Grazie della pazienza :)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
No l'effetto ad occhio non si vede, è vero!

strip_tags() , htmlentities() , addslashes()

sono funzioni native di php e servono per ripulire le stringhe da caratteri indesiderati tipo apici etc

caratteri che potrebbero essere utilizzati da personaggi loschi ( e c'è ne sono che non hanno altro da fare) per inserire nel tuo database link o addirittura script dannosi.

Se vuoi informarti: http://php.html.it/articoli/leggi/89...sql-injection/.

Non ti inserisce perchè ci sara qualche errore, bisogna individuarli

se arrivo gli do un occhiata
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Problema con controllo form in real time jQuery 6
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
Emix Problema con creazione form css/mobile HTML e CSS 3
zammaeng [PHP] Problema form con lista PHP 8
B problema con i form Javascript 0
D Form Registrazione con conferma via email - problema PHP 10
P Problema creazione form con ajax PHP 1
S Problema con Form CSS HTML e CSS 1
F Problema con passaggio variabile da form PHP 3
J Problema con form in bootstrap HTML e CSS 0
O Problema con refresh/form PHP 0
M problema con form scrittura su mysql PHP 3
S Problema php con form PHP 0
T problema strano con procedura di controllo da database, di dati immessi in un form asp Classic ASP 5
A problema con un form HTML e CSS 77
S Problema con l'invio del form in php PHP 0
Y problema allineamento form con internet explorer HTML e CSS 2
A problema con form paypal HTML e CSS 0
A Piccolo problema con form email HTML e CSS 2
P problema validazione form con ajax e jquery Ajax 0
M Problema con form per accesso area riservata ai soci PHP 2
V problema con form in input/output PHP 3
L problema con form ed input PHP 6
F Problema con Form contatti PHP 4
D Problema nella validazione di un form con JQUERY ed AjAX jQuery 4
T Problema con form e recupero dati da mysql PHP 17
A problema con un semplice form per un loggin in php PHP 2
C problema invio mail con form php PHP 0
A problema con l'inserimento di valori in una tabella dopo una ricerca da form Classic ASP 1
asevenx problema con funzione per far apparire e scomparire un form di commenti PHP 1
G Problema con la creazione di una tabella form PHP 9
C AJAX FORM MAIL - problema con gli a capo nel messaggio Javascript 0
G problema con plugin validazione form jquery jQuery 0
T Problema condizione di un form con mysql PHP 15
D problema con form che invia dati al database PHP 0
M problema form con piu allegati e pagamento online PHP 1
F Problema di reindirizzamento con alcune form PHP 4
I [PHP]Problema sito con form login in ogni pagina PHP 7
I Problema con Form html HTML e CSS 9
C Problema con il doppio invio nel form con onsubmit HTML e CSS 9
D Problema con allegato tramite form mail PHP 2
SolidSnake4 problema con form ajax Javascript 8
P Problema moduli Form.php con browser diversi PHP 2
E problema con Database e form PHP 15
M Problema con form dinamico Ajax 0
R Form Mail: Problema con Frame Supporto Mr.Webmaster 4
Ele84 Problema con form action="mailto:...." HTML e CSS 2
K Problema invio dati form con ASP Classic ASP 8
V Problema con FormMail e form!!! Programmazione 1
cosov Problema con numeri nel form Classic ASP 2

Discussioni simili