Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [PHP]problema con vari controlli

    ho questa pagina che deve effettuare dei controlli sulle variabili di sessioni e valori di db, ma al momento della visualizzazione della chat, non funziona -.-
    semplicemente da schermo vuoto
    provate a dare un occhiata please che è la 5° volta che riscrivo tutto e mi stan girando con sensi rotatoriamente opposti..
    Codice PHP:
    <?
    $id 
    $_GET['id'];
    // CONTROLLI SU PERMESSI
    $b mysql_query("SELECT * FROM mappa WHERE idstanza = '$_GET[id]' ") or die (mysql_error());
    $c mysql_fetch_array($b);
    $bo explode("|",$c['invit']);
    #if ($_SESSION['admin'] != "1") { 
    if ($c['restrizione'] == "1") {
    $sel mysql_query("SELECT id FROM utenti WHERE nome = '$_SESSION[nome]'");
    $row mysql_fetch_array($sel);
    foreach(
    $bo as $id) {
        if (
    $id == $row['id']) {
            
    $presente true;
        }
    }
    if (
    $presente != 1) {                                                                                                                       //controllo se l'utente è invitato o è in gilda
        
    if ($_SESSION['gilda'] != $c['gilda']) {
            if (((
    $c['costo'] != "0") || ($c['costo'] != NULL))&&($_GET['compra'] == "1")) {                                //controllo se la stanza è a pagamento ed è di tipo 1 ('prenotazione')
                
    echo "<script language = javascript>document.location.href=\"compra.php\";</script>";                //reindirizzo l'utente alla pagina di acquisto    
            
    }
            if (((
    $c['costo'] != "0") || ($c['costo'] != NULL))&&($_GET['compra'] == "2")) {                                //controllo se la stanza è a pagamento ed è di tipo 2 ('una tantum')
                
    $sel mysql_query("SELECT soldi FROM utenti WHERE id = '$_SESSION[id]'");
                
    $row mysql_fetch_array($sel);
                echo 
    "bo3";
                if (
    $c['costo'] > $row['soldi']) {                                                                                                //sottraggo i soldi dell'accesso e lo metto tra gli invitati
                    
    $up mysql_query("UPDATE utenti SET soldi = soldi - '$c[costo]' WHERE id = '$_SESSION[id]'");
                    
    $invit $c['invit']."|".$_SESSION['id'];
                    
    $up mysql_query("UPDATE mappa SET invit = '$invit' WHERE idstanza = '$_GET[id]'");
                    echo 
    "bo1";
                } else {
                    echo 
    "bo2";                                                                                                                                //in caso non abbia abbastanza soldi lo reindirizzo alla mappa
                    
    echo "<script language=javascript>alert(\"Non hai abbastanza soldi per entrare\");</script>";
                    echo 
    "<script language=javascript>document.location.href=\"mappa.php\";</script>";
                }
            }
            echo 
    "bo";
        echo 
    "<script language=javascript>alert(\"Non sei stato invitato\");</script>";
        echo 
    "<script language=\"JavaScript\">parent.document.location.href='mappa.php';</script>";
        }
    }
    }
    #}
    //FINE CONTROLLI
    il primo controllo $_SESSION['admin'] è commentato per vedere se funzionava o meno...e non funziona

  2. #2
    normalmente quanto ritorna una pagina bianca è perchè c'è un errore di sintassi. Per vedere qual'è devi guardare il file error_log la cui posizione dipende dal tuo sistema operativo ed eventualmente distribuzione.
    Comunque ad una prima occhiata mi sembra che scritto come hai postato manca una graffa chiusa alla fine dello script.
    ciao
    sergio

  3. #3
    Innanzitutto ti consiglio vivamente di scrivere il codice e sarebbe buona norma avere uno stile di indentazione pulito. Comunque c'è una parentesi graffa chiusa in +.
    Prova a toglierla.

    Ciao.

  4. #4
    dunque, togliendo o aggiungendo una graffa mi da in entrambi casi errore, uno di unexpected $end (in caso tolgo) e unexpected } in caso aggiungo...
    poi gianf non ho capito bene la storia del codice e dello stile
    intanto grazie a voi

  5. #5
    Innanzitutto i commenti si trovano in una posizione molto distante, adesso nn so se è perché nel riportarli qui sul sito ti ha aggiunto una montagna di spazi.
    Per l'indentazione, lo so ke lo standard prevede ad es.

    if (...) {
    if (...) {
    .......
    }
    }

    però sarebbe molto meglio scrivere

    if (..)
    {
    if (...)
    {
    }
    }

    ad occhio nel secondo caso, riesci subito a distinguere i vari blocchi di codice racchiusi negli if, oltre al fatto che subito puoi notare la mancanza di parentesi graffe.

    Comunque mi riferivo all'ultima graffa non commentata (è in +)!


    Ritornando al tuo errore, riscrivi il tuo file prendendo dei piccoli pezzi per volta.
    Inizia con

    $id = $_GET['id'];
    // CONTROLLI SU PERMESSI
    $b = mysql_query("SELECT * FROM mappa WHERE idstanza = '$_GET[id]' ") or die (mysql_error());
    $c = mysql_fetch_array($b);
    $bo = explode("|",$c['invit']);

    e cancella tutto il resto.

    Innanzitutto prendi il contenuto dell'array $c e mostra a video il contenuto di tutti i campi della tabella che hai preso, per vedere se effettivamente hai preso qualcosa.
    Poi inizia ad aggiungere il codice restante.

    Speriamo...

  6. #6
    uhm, ottimo metodo quello del rientro con le grafe...
    dunque, parrebbe che io abbia risolto:
    era un problema del foreach che ho usato al posto di in_array
    Codice PHP:
        foreach($bo as $idpg
            {
            if (
    $idpg == $row['id']) 
                    {
                
    $presente true;
            }
        } 
    stranamente però mi pareva giusto questo procedimento, probabilmente avrò sbagliato qualcosa nell'algoritmo prima... ho risolto utilizzando il famigerato in_array che precedentemente non funizonava
    grazie a tutti specialmente a te gianf_ che mi hai dato un ottimo consiglio sui rientri

  7. #7
    Innanzitutto mi devo scusare con te, perché osservando attentamente il codice, le parentesi graffe sono giuste mentre io erroneamente avevo detto ke l'ultima parentesi graffa era in +.

    Ritornando al foreach, nella versione originale avevi scritto


    foreach($bo as $id)
    {
    if ($id == $row['id'])
    {
    $presente = true;
    }
    }

    ma la variabile l'avevi utilizzata già all'inizio:

    $id = $_GET['id'];


    PS: vorrei chiederti una cortesia.
    Nell'ultimo messaggio che hai scritto, hai inserito il tuo codice php

    foreach($bo as $idpg)
    {
    if ($idpg == $row['id'])
    {
    $presente = true;
    }
    }

    all'interno di un riquadro ritagliato con sfondo bianco.

    Anche se ho già scritto un sacco di messaggi da quando mi sono iscritto al forum, per mancanza di tempo non mi sono mai preoccupato di imparare come si fa a scrivere all'interno di un messaggio un tale riquadro. Me lo potresti dire gentilmente?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.