Visualizzazione risultati 1 fino 15 di 15

Discussione: .htaccess codice PHP non funzionante

  1. #1
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    23

    Predefinito .htaccess codice PHP non funzionante

    Salve a tutti, qualche giorno fà ho per sbaglio cancellato il file .htaccess sulla cartella principale del sito. Ho ricreato il file .htaccess e tramite l'editor semplificato ho scelto una versione di PHP ad esempio ho provato con la versione 5.3
    A questo punto le pagine .php che avevo creato in precedenza non funzionano come dovrebbero, potrebbero non essere più compatibili i codici presenti nelle pagine con la versione settata nel file .htaccess? (le ho settate tutte e danno tutte problemi).

    Il codice che ho nella pagina .php, ora non funzionanti è:
    Codice:
    <php
    mysql_connect("localhost","fiduciali","password");
    mysql_select_db("my_fiduciali");
    
    //il codice che segue viene scritto nel file 500 volte sempre nel modo che segue (con diversi valori)
    $querycontrollo = mysql_query("SELECT * FROM TABELLA WHERE A='TESTO A' AND EST='50445,670' AND NORD='-1094,130' AND C='TESTO C'");
    if (mysql_num_rows($querycontrollo) == 0) {
    $query = mysql_query("INSERT INTO TABELLA (A, EST, NORD, C) VALUES ('TESTO A','50445,670','-1094,130','TESTO C')");
    }
    //fino qui
    
    //nella fine del file si esegue un refresh per passare alla pagina 2
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=2.php\">";
    ?>
    il codice invece nel file .htaccess è:

    Codice:
    # av:AntiHotlink
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_URI} \.(gif|jpe?g|png)$ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^https?://([a-z0-9\-\.]*)fiduciali\.altervista\.org
    RewriteCond %{REQUEST_URI} !^\/_altervista_ht\/
    RewriteCond %{HTTP_REFERER} !^https?://([a-z0-9\-\.]+)google\.
    RewriteRule .*$ http://hl.altervista.org/split.php?http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    # AntiHotlink
    
    # # av:php5-engine
    AddHandler av-php53 .php
    con le versioni php 5.3 o 5.3 extra la pagina si apre e scorre il codice fino a passare nella pagina 2.php senza inserire nulla nel Database
    con le versioni 5.6 e 7 php si visualizza l'errore No input file specified.

    mi potreste spiegare il codice che è stato soppresso / aggiunto nelle diverse versioni?
    potreste scrivermi il codice da inserire nel file .htaccess che richiama una precedente versione PHP e comunque che a voi funziona con il codice presente nelle mie pagine?

    Ringrazio anticipatamente per una vostra eventuale risposta.

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

    Predefinito

    Il codice PHP che hai postato utilizza le vecchie funzioni mysql, ormai obsolete. Ti consiglierei di utilizzare la versione mysqli.

    Altrimenti, se vuoi continuare ad utilizzare quel codice, dovresti appunto utilizare PHP5.3. Se però dici che non inserisce nulla, significa che i campi nel database non hanno il tipo corretto, oppure non specifichi tutti i campi. Dovresti utilizzare mysql_error() così da capire che errore accade; oppure puoi eseguire la query tramite phpMyAdmin e vedere l'errore.

    Ciao!

  3. #3
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Come già meglio espresso da alemoppo l'estensione mysql è stata deprecata da php 5.5.0 e rimossa da php 7.0.0.
    Tendo a ricordare che inserisci i dati solo se non sono già presenti nel tuo database, quindi da phpmyadmin dopo aver selezionato my_fiduciali (il database) devi vedere che errore ti ritorna
    Codice:
    INSERT INTO TABELLA (A, EST, NORD, C) VALUES ('TESTO A','50445,670','-1094,130','TESTO C');

  4. #4
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    23

    Predefinito

    Salve e grazie per la vostra risposta e spiegazione

    La tabella in phpmyadmin è composta dai campi: ID, A, EST, NORD, C (tutti settati su longtext ad eccezione del campo ID che è settato su INT e autoincrementato)
    nella pagina php che esegue l'inserimento, dopo aver controllato la non esistenza delle stesse voci in database, vado a inserire tutti i campi ad eccezione del ID che si autoincrementa
    (ho inserito in DB più di 40.000 righe con lo stesso codice, potrebbe comunque esser cambiato qualcosa e ho da inserire comunque il campo ID nella pagina php?)

    controllando con mysql_error():
    - la riga per la connessione
    - la riga per la scelta del database
    - la riga per il controllo
    - la riga per l'inserimento se il controllo non ha rilevato stessi dati

    Codice:
    mysql_connect("localhost","fiduciali","LA STESSA PER ACCEDERE AD ALTERVISTA") or die ('Errore 1: ' . mysql_error());
    mysql_select_db("my_fiduciali") or die ('Errore 2: ' . mysql_error());
    trovo subito problemi nella riga contente le informazioni per la connessione, questo è l'errore:
    Access denied for user 'avpanel'@'localhost' (using password: NO)

    tutti i dati in quella riga sono corretti, non ho mai cambiato la pass al database lasciandola coincidere con quella per accedere ad AlterVista (ho notato che la pagina con l'errore contenuta in una cartella, se spostata nella cartella principale non dà nessun errore e inserisce le nuove righe in DB).

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

    Predefinito

    Da gestione file:
    • Apri la cartella in cui è contenuto questo script
    • Se esiste il file .htaccess, clicca su "modifica" in corrispondenza del file .htaccess e controlla la versione di PHP


    p.s: nel codice, puoi anche non inserire la password: anche se lasci il campo password vuoto, funzionerà uguale:
    Codice:
    mysql_connect("localhost","fiduciali","")
    In ogni caso ripeto: io ti consiglierei di passare a mysqli, è molto simile al codice che stai utilizzando, vedi l'esempio Procedural style qui.

    Ciao!
    Ultima modifica di alemoppo : 16-11-2018 alle ore 14.44.58

  6. #6
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Codice:
    $link = mysql_connect('localhost','fiduciali','password');
    if(!$link) {
    die('Non connesso'.mysql_error());
    }
    $db_selected = mysql_select_db('my_fiduciali',$link);
    if(!$db_selected) {
    die('Non puoi usare my_fiduciali'.MySQL_error());
    }
    l'user avpanel mi sembra il default se sbagli la chiamata, dovresti risolvere se racchiudi mysql_connect in una variabile e poi in mysql_select_db la passi come secondo argomento.
    Ovviamente devi accertarti di usare una versione inferiore di php 5.5.0 nella cartella in uso (se nella root hai php 5.3 tutti i figli ereditano tale impostazione ma se il figlio usa una configurazione htaccess diversa allora per quella cartella verrà sovrascritto).
    Ultima modifica di darbula : 16-11-2018 alle ore 16.41.42

  7. #7
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    23

    Predefinito

    Ho avuto la stessa idea, ho creato un file .htaccess (non presente in cartella) e inserito nella cartella con le pagine php non funzionanti, ma nulla.
    Ho poi cancellato l'intera cartella e ne ho creato un'altra contenente solo le pagine php, l'errore è diverso da quello mostrato settando una diversa versione di php.
    Seguirò il consiglio e mi documenterò per aggiornare a mysqli.
    Un ultima cosa, cambiano altre stringhe la sintassi oltre mysqli dalla versione deprecata 5.3 alla 7.0?

  8. #8
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    No però.. Quando da mysql passi a mysqli leggi il manuale php ad esempio mysqli_query usa $link come primo argomento mentre mysql_query come secondo argomento.
    Se il tuo script dapprima funzionava, anche con il port (eseguendo la documentazione ufficiale alla lettera) non dovresti incombere in problemi..
    In MySQL 5.6 ci sono regole più severe (cioè sei hai un campo intero non puoi farlo passare per una stringa).
    Ultima modifica di darbula : 17-11-2018 alle ore 01.24.21

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

    Predefinito

    Hai provato come ti avevo detto? È importante per verificare che lato database sia tutto ok.

    Da phpMyAdmin, seleziona il tuo database (my_fiduciali), quindi vai su SQL ed esegui la query che sta eseguendo PHP.

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    oppure puoi eseguire la query tramite phpMyAdmin e vedere l'errore.
    Ciao!

  10. #10
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    23

    Predefinito

    Certo che ho provato come mi hai detto, il codice non produce nessun errore e inserisce correttamente la riga.

    Il codice in effetti funziona.
    Ho notato che il file 1.php contenente il codice in oggetto se situato nella cartella
    http://fiduciali.altervista.org/CARTELLA_1/1.php produce l'errore:
    Errore 1: Access denied for user 'avpanel'@'localhost' (using password: NO)
    errore visualizzato nel caso in cui non esegue la connessione

    magicamente se sposto lo stesso file 1.php nella cartella principale
    http://fiduciali.altervista.org/1.php esegue perfettamente il codice

    Ho cancellato e creato una nuova cartella, il file .htaccess nella cartella principale setto PHP 5.3 valido per la cartella principale che per le sottocartelle (comunque ho copiato il file .htaccess anche nella cartella /CARTELLA 1/ dove è il file di inserimento.

    cosa potrebbe creare questo problema che rende il codice funzionante solo nella cartella principale?

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

    Predefinito

    Puoi provare facendo eseguire il codice in una cartella che non contiene alcun .htaccess? (se una cartella non ha .htaccess, viene ereditato quello della cartella superiore, nel tuo caso quello della root).

    Ciao!

  12. #12
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    23

    Predefinito

    Esatto, nel file .htaccess della root è settata la versione PHP 5.3
    per esporre meglio il problema allego anche il semplice codice .htaccess presente nella root:
    Codice:
    # # av:php5-engine
    AddHandler av-php53 .php
    Ho provato eliminando la cartella e ricreandone una nuova, senza alcun file .htaccess al suo interno.

    Ho anche creato una terza cartella, copiando al suo interno il file .htaccess contenuto in root.

    ma in tutti i casi il problema non si risolve.
    Il codice per la connessione funziona solamente nelle cartelle root.

    E non mi spiego il motivo

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

    Predefinito

    In effetti è strano.

    Non funziona nemmeno con la versione mysqli?

    Codice PHP:
    <?php
    $db
    = mysqli_connect('localhost', 'fiduciali', '', 'my_fiduciali');

    if (
    mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    //il codice che segue viene scritto nel file 500 volte sempre nel modo che segue (con diversi valori)
    $querycontrollo = mysqli_query($db,"SELECT * FROM TABELLA WHERE A='TESTO A' AND EST='50445,670' AND NORD='-1094,130' AND C='TESTO C'");
    if (
    mysqli_num_rows($querycontrollo) == 0) {
    $query = mysqli_query($db,"INSERT INTO TABELLA (A, EST, NORD, C) VALUES ('TESTO A','50445,670','-1094,130','TESTO C')");
    }
    //fino qui

    //nella fine del file si esegue un refresh per passare alla pagina 2
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=2.php\">";
    ?>
    Ciao!

  14. #14
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    23

    Predefinito

    Il codice con la versione mysqli che mi hai fornito fà ciò che deve sia nella root con .htaccess che setta la versione PHP 5.3, e funziona anche in tutte le altre cartelle.

    Quindi il problema subentra solo nelle cartelle e solo con le pagine contenenti la versione deprecata mysql.
    Risolvo il problema strano aggiornando alle nuove versioni mysqli.

    Un'ultima cosa:
    Oltre alla comunicazione con il database da php, e quindi l'introduzione della nuova versione mysqli che depreca la vecchia mysql, ci sono altri aggiornamenti da tenere in considerazione introdotti in versioni PHP 5.6 e superiori che non interessano il database, ad esempio la sintassi di un Array, Cicli for, while e do, ecc. ecc.?

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

    Predefinito

    In linea di massima, no.

    Però dai una letta ai link in questa pagina.

    Ciao!

Regole di scrittura

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