Joomla.it Forum
Joomla! 1.5.x (versione con supporto terminato) => Joomla! 1.5 => : ventus85 18 Feb 2009, 23:29:18
-
Oggi in treno mi sono messa a fare un modulino semplice semplice per Joomla 1.5.
Essendo una primissima versione l'ho fatto senza schema MVC.
E' un semplice form stile richiesta di informazioni, nulla di più.
Però ho un problema: nel mio file php richiamo un altro file php.
Nella pratica esso viene richiamato appena uno pigia un bottone presente nel form.
Ora io l'ho scritto per esempio così:
<form action="/modules/mod_requestVentus85/mod_requestVentus85form.php" method="post">
<table align="center">
<tr>
<td align=right><B>Your Name:</td>
<td><input name="name" size=30 value=""></td>
</tr>
[...]
<input type="submit" value="Vai">
[...]
</form>
Però quando clicco sul bottone Vai mi da errore 404 e dice:
The requested URL /modules/mod_loginVentus85/mod_loginVentus85form.php was not found on this server.
Ora il problema è nella riga dove richiamo il file, cioè
<form action="/modules/mod_requestVentus85/mod_requestVentus85form.php" method="post">
però ho provato varie soluzioni passandogli indirizzi diversi ma mi dà sempre l'errore 404.
Premetto che ho fatto così perchè in uno script simile in php che avevo fatto funzionava bene.
Qualcuno mi dà una dritta?
grazie
-
Uhmmmmm...la cosa non mi torna.
Per i componenti per esempio si dovrebbe usare qualcosa del genere:
<form method="post" target="_blank" action="index.php?option=com_XXX&view=front&Itemid=YYY">
Ma il problema che il mio è un modulo e il file che voglio richiamare ha questo path:
/modules/mod_requestVentus85/mod_requestVentus85form.php
quindi non ha la stessa forma dei componenti, se fosse dovrebbe avere action="index.php?option=mod_requestVentus85 e poi?
Se gli do action="index.php?option=mod_requestVentus85/mod_requestVentus85form.php" ovviamente mi dà errore 404.
Uffa, non volevo usare vie come Joomla Mod PHP o trasformarlo in componente per una cosa così banale...
-
Ventus so che è banale ma hai provato a mettere il path completo rispettando le maiuscole se ci sono?
es: "http://localhost/sito/modules/mod_requestVentus85/mod_requestVentus85form.php"
-
Ventus so che è banale ma hai provato a mettere il path completo rispettando le maiuscole se ci sono?
es: "http://localhost/sito/modules/mod_requestVentus85/mod_requestVentus85form.php"
Si.
Ho provato anche a richiamare il path attraverso un metodo (poichè te a priori non sai l'indirizzo del sito remoto) ma mi da sempre errore 404.
:(
Grazie per la risposta. :)
-
Con
<form method="post" target="_blank" action= 'modules/mod_requestVentus85/mod_requestVentus85form.php' );>
cioè senza / (che idiota sono stata, eppure uno dovrebbe imparare) non mi restituisce più errore bensì una pagina bianca al posto del messaggio di mancata compilazione del campo o di avvenuta spedizione della richiesta.
Diciamo che stiamo migliorando... ::)
-
Ciao Ventus prova a dare vita al mod_requestVentus85form.php, mettendo ad esempio:
<?php
function saluto () {
if (date("H")>=12) {
echo "Buonasera";
} else {
echo "Buongiorno";
}
}
?>
:)
-
Ciao Ventus prova a dare vita al mod_requestVentus85form.php, mettendo ad esempio:
<?php
function saluto () {
if (date("H")>=12) {
echo "Buonasera";
} else {
echo "Buongiorno";
}
}
?>
:)
Grazie Milcon.
Si, avevo provato a fargli stampare un hello world per vedere se era il mio pezzo di php a non funzionare, invece nisba.
Quindi l'errore è nel primo file.
Dopo me lo riguardo.
;)
-
l' errore è nel secondo file che deve ricevere il metodo POST:
prova così:
primo file:
login.htm
<html>
<body>
<form method="POST" action="welcome.php">
<input type="password" name="password">
<input type="submit" value="Login">
</body>
</html>
secondo file:
welcome.php
<?php
$password = $_POST["password"];
if ($password <> 'roberto') {
echo "Non sei autorizzato ad entrare in quest'area";
} else {
echo"Saluti sei nell'area protetta";
}
?>
lo pui vedere attivo: QUI (http://milcon.altervista.org/a/login.htm)
la pw è roberto. :)
-
Boh...
Ho riprovato con una cosa simile alla tua (un misto con un hello world passandogli un parametro inserito) e funziona.
Dopo ricontrollo il file originale e vi faccio sapere, ora devo finire un lavoro che devo consegnare stamani.
;)
-
mod_loginVentus85.php
<html>
<body>
<form method="POST" action= "modules/mod_requestVentus85/mod_requestVentus85form.php" );>
<table align="center">
<tr>
<td align=left><b>Nome:</b></td>
<td><input name="name" size=30 value=''></td>
</tr>
<tr>
<td align="center"><b>Richiesta di informazioni:<br>
<textarea name="Comments" cols=50 rows=3 wrap=soft></textarea>
</b></td>
</tr>
<td align="center"><input name="submit" type="submit" value="Spedisci">
<input name="reset" type="reset" value="Annulla">
</td>
</tr>
</table>
</body>
mod_requestVentus85form.php
<?php
$name = $_POST["name"];
echo "grazie per averci spedito la richiesta";
}
?>
A parte che non uso $name (all'inizio avevo fatto la concatenazione con la frase successiva), ma poi non mi sembra quel codice così complicato...
-
Non capisco come mai riscrivendo il file funziona... ???
Vabbè, meglio così.
:)
Ora volevo fare in modo che nel secondo file spedisse un'email all'indirizzo inserito nel back end.
Io ho fatto così:
mod_requestVentus85.xml
[...]
<param name="email" type="text" default="my@email" label="email" description="Parametro per indirizzo e-mail" />
[...]
mod_requestVentus85.php
[...]<?
$email = $params->get( 'email' );
echo "e-mail " . $email;
$site = $params->get( 'site' );
?>[...]
mod_requestVentus85form.php
<?php
$sendTo = "your@address.com";
$subject = "Arriva email!";
$testo = $_POST["Comments"];
$mailheaders = "Reply-To: your@address.com \n";
mail($sendTo, $subject, $testo,$mailheaders );
$name = $_POST["name"];
echo "Grazie " . $name;
?>
Ora ho due problemi:
problema 1) come faccio a passare nel secondo file il parametro $email al posto di your@address.com?
Io ho messo $sendTo = $email ma non posso verificare se va bene perchè vedi problema 2).
problema 2) anche se al posto di your@address.com metto il mio indirizzo email non mi arriva nulla.
Errori non me li da, infatti richiama il file e stampa a video la frase grazie + il nome passato.
Ho controllato un po' su internet, ma le idee degli utenti sono piuttosto confuse.
Il metodo mail() di php richiede 3 argomenti obbligatori (i primi che ho messo) più altri 2 opzionali (uno per l'headers, l'altro non ricordo).
Restituisce true quando il messaggio è passato correttamente, anche nel caso che l'email non sia stata inviata.
Ho trovato che bisogna impostare correttamente il file php.ini nel quale viene specificato quale server SMTP verrà usato, ma qui non c'entra nulla.
Ho guardato un po' il codice del componente di default di Joomla (dove usa MailTo) ma non mi ha aiutato.
Boh, ci penserò ancora...
-
Non ci credo...mi sono arrivate le email, con ritardo ma sono arrivate!
Due su quattro prove, quindi dovrebbero andare bene le ultime due versioni del codice quelle con l'inserimento dell'indirizzo email nel codice e non preso come parametro (meno male in una ho messo il contenuto dell'email diverso dalle altre sennò non le riconoscevo), così:
Da: root@admin2.byetcluster.com (root) A: Array
Priorità: Normale Oggetto: Array
Data: mar 24/02/09 22:25
Poi il testo, un rigo di pubblicità e la frase Spam Filtered (ID:2673352)
L'ora coincide a meno del fuso orario, il testo coincide, gli altri dati invece sono diversi da quelli da me inseriti.
L'oggetto nella casella e-mail coincide con quello da me inserito, nell'email invece c'è scritto Array.
Boh!
Però è già un passo avanti. ;)
Ora provo con il codice giusto ad aggiungere il parametro.
-
io per l' invio mail ho risolto così:
info.htm
<form action="sendmail.php" method="post">
Nome: <input type="text" name="nome">
<br>
Email <input type="text" name="email">
<input type="submit" value="Invio">
</form>
sendmail.php
<?php
$mittente = "From: Il tuo nome <info@tuosito.com>";
$destinatario = "info@tuosito.com";
$oggetto = "Prova invio email";
$nome = $_POST["nome"];
$email = $_POST["email"];
$messaggio = "Dati utente: $nome, Email: $email";
mail ($destinatario,$oggetto,$messaggio,$mittente);
echo "Grazie per aver richiesto maggiori informazioni. Entro 24 ore verrai ricontattato";
?>
se la mail viene mandata a se stesssi, quindi come nel caso che un utente compila un form di richiesta informazioni, si compila solo il campo destinatario. La mail arriva subito con l' oggetto in questione, il nome dell' utente e la sua mail. Ovviamente dipende dai server di posta. :)
-
Funziona, come scritto, anche come ho fatto io.
Ora ho solo il problema di portare dal primo file php (dove richiamo il parametro email che è l'email impostata nel backend del sito) al secondo file php che è quello che si occupa della spedizione dell'email (cioè usa la fuzione mail() ).
Avevo provato cambiano con il metodo post e passandolo $email nell'url, ma non va bene. Non ho però guardato altre soluzioni per altri impegni.
-
E' una sperimentazione ho vuoi creare qualcosa di nuovo?
-
E' una sperimentazione ho vuoi creare qualcosa di nuovo?
Autodidattismo. Anzi didattica bella e buona.
-
Allora, poichè ho risolto il problema iniziale, cioè bastava mettere
<form method='POST' target='_blank' action= 'modules/mod_nomemodulo/mod_secondofile.php' );>
e risolto anche quello successivo, cioè Ora ho solo il problema di portare dal primo file php (dove richiamo il parametro email che è l'email impostata nel backend del sito) al secondo file php che è quello che si occupa della spedizione dell'email (cioè usa la fuzione mail() ).
creando dentro al form degli hidden e passargli il valore rileggendo la variabile incriminata
<input type="hidden" name="dato" value="<? $email = $params->get( 'email' );?>">
e inserendo con il metodo previsto dal post nel secondo file
$sendTo = $_POST["dato"];
...
...insomma dopo tutto il discorso volevo dire che è tutto risolto e quindi metto il target [RISOLTO] alla discussione.
:)