Visualizzazione risultati 1 fino 15 di 15

Discussione: php e javascript amici o nemici?

  1. #1
    Guest

    Question php e javascript amici o nemici?

    Ciao a tutti, mi trovo a postare con questo simpatico topic, che in realtà per me è diventata un ossessione.
    E da giorni che mi ritrovo nella mia pagina web(.php) con un problema.
    La pagina è fatta con login e database, gestito da php, e tutto funziona regolare.
    Appena ho provato ad abbellire il sito con un slideshow in javascript, tutto si è mutato in un mostruoso incubo.
    Lo slideshow, funziona benissimo, ma aime, il login non và più una serie di inteminabili errori, o addirittura nemmeno segni di vita

    Cosi chiedo se è possibile che si crei una cosi letale incompatibilità tra php e javascript?

    Grazie in anticipo

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Non credo proprio.
    Php e javascript sono su due mondi diversi: il primo è processato dal server, il secondo dal browser.

    Forse, incosapevolmente, stai commettendo qualche errore. Dovresti postare il codice o linkare la pagina.

  3. #3
    Guest

    Predefinito

    Mi da questo errore quando cerco di loggarmi o di uscire

    Warning: Cannot modify header information - headers already sent by output started at \index.php on line 243

    Mi dice sempre gli header , io ho provati a non farglieli processare, ma non funziona nulla.

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Probabilmente lo script cerca di modificare gli header una volta che sono stati già inviati.

    Se non riesci a risolvere, posta l'interno codice qui.

  5. #5
    Guest

    Predefinito

    Questo è il codice:

    Codice HTML:
    <script type="text/javascript">
    function slideSwitch() {
        var $active = $('#uno IMG.active');
    
        if ( $active.length == 0 ) $active = $('#uno IMG:last');
    
        // use this to pull the images in the order they appear in the markup
        var $next =  $active.next().length ? $active.next()
            : $('#uno IMG:first');
    
        // uncomment the 3 lines below to pull the images in random order
        
        // var $sibs  = $active.siblings();
        // var rndNum = Math.floor(Math.random() * $sibs.length );
        // var $next  = $( $sibs[ rndNum ] );
    
    
        $active.addClass('last-active');
    
        $next.css({opacity: 0.0})
            .addClass('active')
            .animate({opacity: 1.0}, 1000, function() {
                $active.removeClass('active last-active');
            });
    }
    
    $(function() {
        setInterval( "slideSwitch()", 5000 );
    });
    
    </script>
    Ultima modifica di karl94 : 28-05-2011 alle ore 12.17.19 Motivo: Formattazione del codice

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    E il php?
    Non è che questo codice javascript lo inserisci in index.php prima del tag <?php ?

  7. #7
    Guest

    Predefinito

    il codice javascript è dichiarato dentro <head>, invece all'inizio dell'Index.php viene richiamato il php per le sessioni...poi nel body c'è l'altro codice.

  8. #8
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,247

    Predefinito

    Nella riga 243?

    Comunque, (secondo me), forse il problema è php: javascript non centra.

    Dovresti guardare se lo script (php) utilizza le funzioni header() e/o setCookie() [che modificano i parametri dell'header].
    Queste funzioni possono trovarsi anche dentro file inclusi nella pagina...

    Ciao!

    EDIT:

    N.B: l'header non ha nulla a che fare con l'<head>! (cioè: non sono la stessa cosa). Il codice "incriminato", quindi, può trovarsi benissimo anche a "livello" del <body>!
    Ultima modifica di alemoppo : 27-05-2011 alle ore 20.20.38

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Nella riga 243?

    Comunque, (secondo me), forse il problema è php: javascript non centra.

    Dovresti guardare se lo script (php) utilizza le funzioni header() e/o setCookie() [che modificano i parametri dell'header].
    Queste funzioni possono trovarsi anche dentro file inclusi nella pagina...

    Ciao!

    EDIT:

    N.B: l'header non ha nulla a che fare con l'<head>! (cioè: non sono la stessa cosa). Il codice "incriminato", quindi, può trovarsi benissimo anche a "livello" del <body>!
    Certo...nel codice php ci sono vari header.

    Pensate che siano questi il problema? ed in caso come faccio a sostituire la sua funzione?

  10. #10
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,247

    Predefinito

    Non puoi sostiture...
    Gli header() li puoi richiamare, ma non dopo aver inviato dell'output (per intenderci, html).

    EDIT:

    Per vedere se puoi modificare i vari dati nell'header, puoi utilizzare la headers_sent()

    Ciao!
    Ultima modifica di alemoppo : 27-05-2011 alle ore 21.07.56

  11. #11
    Guest

    Predefinito

    Ora provo e Speriamo!

    EDIT:

    Ora non da più errori...ma il login non va più...o meglio ora devo premere il stato 2 volte, dopo che ho digitato user e password...non capisco....con la condizione :

    if (!headers_sent()) {
    header("location: index.php?sez=1");
    }
    non da errore, ma nemmeno funziona



    Cosi che cosa mi consigli?apparte i doppi post da non fare :)
    Ultima modifica di studiogln : 27-05-2011 alle ore 21.29.13 Motivo: Non fare doppi post: usa il tasto Edita!

  12. #12
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,247

    Predefinito

    Significa che scrivi qualcosa prima di invocare la header()... Se fai un redirect, non ha senso scrivere dell'html, non ti pare?

    p.s: anche uno spazio bianco è interpretato come "output"....

    Ciao!

  13. #13
    Guest

    Predefinito

    Vorresti dire che se scrivo cosi :
    Codice PHP:
    if (!headers_sent()) {
    header("[COLOR="Red"]location: index.php?sez=1[/COLOR]");}
    Lo spazio tra i : e l'index mi crea errore?
    Ultima modifica di karl94 : 28-05-2011 alle ore 12.18.04 Motivo: Formattazione del codice

  14. #14
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,247

    Predefinito

    nono...
    Io intendo spazio scritto via html!...

    Eventuali echo, print()..., oppure testo (o spazio) prima del tag <?php

    Ciao!
    Ultima modifica di alemoppo : 27-05-2011 alle ore 22.16.25

  15. #15
    Guest

    Predefinito

    il problema me lo continua a dare su due funzioni che vengono richiamate. ora te le posto :

    Codice PHP:
    function notizie()
    {
    #session_start();
    if (!$_GET){
    echo
    "<h1>Ultime notizie</h1>";
    }else{
    if(@!
    $_GET['sez'])#entra qui se il login nn è stato effettuato
    {
    /*@$sez=$_SESSION['sez'];
    if ($sez==1){echo "<h1>Ultime notizie</h1>";}
    if ($sez==2){echo '<h1></h1>';}
    if ($sez==3){echo "<h1>Questa &egrave la sezione dove sono inseriti gli annunci</h1>";}
    if ($sez==4){echo "<h1>Questa &egrave la sezione dove sono inseriti gli eventi</h1>";}
    if ($sez==5){echo "<h1>Questa &egrave la sezione dove sono inseriti i trattati di filosofia</h1>";}
    if ($sez==6){echo "<h1>Questa &egrave la sezione dove sono inseriti gli applicativi</h1>";}
    if ($sez==7){echo "<h1>Questa &egrave la sezione dove sono inseriti i nostri contatti</h1>";}*/
    }else{
    $sez=$_GET['sez'];
    $_SESSION['sez']=$sez;
    $sez=$_SESSION['sez'];
    if (
    $sez==1){ultimenotizie();}
    if (
    $sez==2){echo '<h1>Questa &egrave la sezione dove sono inserite le informazioni su di noi</h1>';}
    if (
    $sez==3){annunci();}
    if (
    $sez==4){eventi();}
    if (
    $sez==5){filosofia();}
    if (
    $sez==6){applicativi();}
    if (
    $sez==7){echo "<h1>Questa &egrave la sezione dove sono inseriti i nostri contatti</h1>";}
    if (
    $sez==8){registrazione();}
    if (
    $sez==9){scrivi();}
    }
    }
    }
    e poi questa:

    Codice PHP:
    function login()
    {
    $accesso="<form name=log1 method=post action=><h3><span>Login</span></h3>
    <br/><p><label for=User>User</label><input name=utente type=text id=utente size=15>
    </p><p><label for=Password>Password</label><input name=password type=password id=password size=15>
    </p><p><button type=submit name=submit>Invia</button></p></form>"
    ;
    @
    $user=$_SESSION['user'];
    @
    $log=$_GET['log'];
    @
    $sez=$_GET['sez'];
    if (
    $sez==""){$sez=1;}
    @
    $msglog=$_SESSION['msglog'];
    if (
    $log==2){
    $_SESSION['user']="";
    header("location:index.php?sez=1");
    }
    if (
    $user=="" and $log=="")
    {
    echo
    "Benvenuto: Anonimo | <a href=index.php?log=1&sez=$sez>Accedi</a> | <a href=index.php?sez=8>Registrati</a>";
    echo
    "<br>$msglog";
    }
    elseif (
    $user=="" and $log==1)
    {
    echo
    "$accesso";
    }
    elseif (
    $user!=""){echo"Ciao: $user | <a href=index.php?sez=9 >Scrivi articolo</a> | <a href=index.php?log=2 >Esci</a>";}
    if (!
    $_POST){}
    elseif (@
    $_GET['log']==1)
    {
    @
    $utente = trim ($_POST['utente']);
    @
    $pass = trim ($_POST['password']);
    if (
    get_magic_quotes_gpc())
    {
    $utente = stripcslashes($utente);
    $pass = stripcslashes($pass);
    }
    if (!
    $utente || !$pass)#blocco eseguito se user o pass mancano
    {
    $messaggio=urldecode("Attenzione!!!, Non hai inserito il Nome utente o la password");
    $_SESSION['msglog']='Attenzione!!!, Non hai inserito il Nome utente o la password';
    header("location:index.php?sez=1");
    }
    if(
    $utente!=""and $pass!=""){
    $utente = mysql_real_escape_string($utente);
    $pass = mysql_real_escape_string($pass);
    $query = "select id_user from utenti where user='$utente' and pass=sha1('$pass')";
    $result = mysql_query($query);
    if (!
    $result) {die("Errore nella query $query: " . mysql_error());}
    $record = mysql_fetch_array($result);
    if(!
    $record) #blocco eseguito se user e pass nn si trovano sul db
    {
    $messaggio = urlencode('Nome utente o password errati');
    header("location:$_SERVER[PHP_SELF]?sez=1&msg=$messaggio");
    $_SESSION['msglog']='Attenzione!!!, Il nome utente o la password sono errati';
    }
    else
    #blocco ke viene eseguito se il login ha avuto successo
    {
    $_SESSION['login_effettuato'] = true;
    $_SESSION['user']=$utente;
    $user=$_SESSION['user'];
    $messaggio = urlencode("Login avvenuto con successo");
    header("location:index.php?sez=1&msg=$messaggio");
    $_SESSION['msglog']="";
    }
    }

    }
    }
    Che ne pensi?
    Ultima modifica di andreafallico : 28-05-2011 alle ore 12.14.20

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •