[Risolto] Problema apertura in PopUp.
[Risolto] Problema apertura in PopUp. postato il 09/09/2014 00:31:34 nel forum programmazione, open source e hosting e modificato da kasa il 23/09/2014 01:27:51
Buonasera a Tutti Voi!
Proprio quest'oggi ho tentato d'inserire all'interno di un mio Progetto l'apertura del Main in una finestra esterna, utilizzando il seguente script.
function openWindow(anchor, options) {
var args = '';
if (typeof(options) == 'undefined') { var options = new Object(); }
if (typeof(options.name) == 'undefined') { options.name = 'win' + Math.round(Math.random()*100000); }
if (typeof(options.height) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
args += "height=" + options.height + ",";
}
if (typeof(options.width) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
args += "width=" + options.width + ",";
}
if (typeof(options.fullscreen) != 'undefined') {
args += "width=" + screen.availWidth + ",";
args += "height=" + screen.availHeight + ",";
}
if (typeof(options.center) == 'undefined') {
options.x = 0;
options.y = 0;
args += "screenx=" + options.x + ",";
args += "screeny=" + options.y + ",";
args += "left=" + options.x + ",";
args += "top=" + options.y + ",";
}
if (typeof(options.center) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
options.y=Math.floor((screen.availHeight-(options.height || screen.height))/2)-(screen.height-screen.availHeight);
options.x=Math.floor((screen.availWidth-(options.width || screen.width))/2)-(screen.width-screen.availWidth);
args += "screenx=" + options.x + ",";
args += "screeny=" + options.y + ",";
args += "left=" + options.x + ",";
args += "top=" + options.y + ",";
}
if (typeof(options.scrollbars) != 'undefined') { args += "scrollbars=1,"; }
if (typeof(options.menubar) != 'undefined') { args += "menubar=1,"; }
if (typeof(options.locationbar) != 'undefined') { args += "location=1,"; }
if (typeof(options.resizable) != 'undefined') { args += "resizable=1,"; }
var win = window.open(anchor, options.name, args);
return false;
Le soprastanti linee di codice hanno lo scopo di settare la funzione che andrà ad aprire la Land in una finestra, lasciando l'Index inviolato. La funzione, quindi, la vado a richiamare nel mio Login, nel seguente modo:
[...]
if (sha1($_POST['pass']) == $rs['password'])
{
$_SESSION['nome'] = $rs['nome'];
$_SESSION['id_pg'] = $rs['id'];
$host_utente=$_SERVER['REMOTE_ADDR'];
$cancella = "DELETE FROM personaggi_presenti WHERE id_pg = " . $_SESSION['id_pg'];
$Result = mysql_query($cancella);
$utente_id=$_SESSION['id_pg'];
$utente_name=$_SESSION['nome'];
$aggiorno_presenti = "INSERT INTO personaggi_presenti (id_pg, nome_pg, ora, location, ip_utente) VALUES('$utente_id', '$utente_name', NOW(), '1', '$host_utente')";
$Result = mysql_query($aggiorno_presenti);
query("UPDATE personaggi SET ultimo_ingresso = NOW() WHERE id = '$utente_id'");
echo '<script type="text/javascript">window.open("http://www.miosito.it/main.php?location=1", "_blank", "resizable=yes,fullscreen=yes,width=1280,height=1024", "true");</script>';
}
[...]
Ed esattamente in:
echo '<script type="text/javascript">window.open("http://www.miosito.it/main.php?location=1", "_blank", "resizable=yes,fullscreen=yes,width=1280,height=1024", "true");</script>';
Tuttavia, al click del bottone che ha la funzione d'avviare il Login ed aprire la pagina del Main, apre dapprima il Main per poi essere re-indirizzato all'Index... come se non avesse passato i dati e non avesse realmente riconosciuto l'Utente come entrato in Land.
Dopo qualche tentativo di Login, l'Utente riesce ad accedere... ma credo che sia solamente perchè ha salvato il suo ingresso ed apre il Main facendo riferimento a quello.
Possibile che mi stia dimenticando qualcosa?
Se tali informazioni vi sembrano alquanto inutili o insufficienti, fornirò in più quel che possono, grazie.
Help!
Kasa.
Pagine → 1
09/09/2014 00:41:27
Gli errori concettuali che sono presenti e di obsolescenza del codice li tralascio momentaneamente, perché credo che non ti riconosca la sessione per un motivo molto semplice.. se ci ho visto giusto.
Nella url che fai aprire in popup tu hai scritto a mano l'intero percorso.
Mettiamo caso che hai usato www.miosito.it come base dell'url così come nell'esempio.
Potrebbe essere che hai fatto il login collegandoti al tuo sito così: miosito.it (ovvero senza il www davanti)
Questo perché www.miosito.it e miosito.it sono domini differenti e una sessione avviata su uno non viene riconosciuta dall'altro.
09/09/2014 00:49:51 e modificato da kasa il 09/09/2014 00:50:03
Eliminando il "www" ho risolto, effettivamente, il problema.
Tuttavia e dato che ci sono...
blancks ha scritto:
Gli errori concettuali che sono presenti e di obsolescenza del codice li tralascio momentaneamente...
Se non ti è di troppo impaccio, posso chiederti a cosa, nello specifico ti riferisci? Magari colgo l'occasione per un poco di cultura a riguardo e imparare qualcosa in più.
09/09/2014 01:09:19 e modificato da blancks il 09/09/2014 01:12:50
L'errore concettuale è che la funzione javascript che hai copiato non la usi mai nei successivi spezzoni di codice.
La funzione l'hai chiamata openWindow() ma ciò che poi hai usato è invece il window.open http://www.w3schools.com/jsref/met_win_open.asp ↗ che è un metodo base fornito da javascript.
Passiamo invece all'obsolescenza, ovvero alle logiche vecchie che vedo nel codice php.
Primo fra tutti la funzione sha1() per criptare le password. Al giorno d'oggi non è più tanto sicura e ci sono alternative migliori http://www.mrwebmaster.it/sicurezza/php-password-login-sicuri_11755.html ↗
Secondariamente vedo che fai uso delle funzioni mysql_*, che nelle attuali release di php risultano essere un modulo dichiarato deprecato e verrà completamente rimosso dalle future versioni di php.
Puoi leggere le avvertenze stesso nella documentazione ufficiale http://it1.php.net/manual/en/function.mysql-connect.php ↗ che ti cito per praticità:
Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information
Spero di essere risultato comprensibile ;)
09/09/2014 10:40:29
Come ho scritto anche nella Francobollo Chat, ieri notte...
Ti ringrazio, Blancks, per gli utili consigli in merito, soprattutto per quanto riguarda la questione del criptaggio password, a me ignoto.
Sono preziose informazioni che, sicuramente, mi daranno nuovi spunti di riflessione. E ciò vale molto. Grazie!
Kasa.
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Foundation Galactic Frontier ↗
State of Survival ↗
Project Entropy ↗
New Orleans ↗