IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

passage d'un script de php 4.2 en php 4.3


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut passage d'un script de php 4.2 en php 4.3
    bonjour,

    J'utilisais une application en php 4.2 sur mon serveur linux.

    J'ai maintenant php 4.3 et j'ai dû modifer le code pour mettre des $_POST et des $_GET...

    J'ai encore un problème dont je n'ai pas trouvé la solution.

    J'ai une fonction dans cette appli pour exporter un dump mysql.
    En php 4.2, cela ouvre une fenêtre pour soit ouvrir le fichier soit enregistrer le fichier.
    En php 4.3, la fenêtre ne s'ouvre pas... j'ai des warnings et les lignes du fichier texte du dump mysql s'affiche à l'écran.

    Code du script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <?php
     
    $year = $_POST['year'];
    $month = $_POST['month'];
     
    if ($connection)
    {
        $query  = 'SELECT AGENT, REFERER, ADDR, DATE, HOST, REF_HOST ';
        $query .= 'FROM '.$lvc_table_visitors.' ';
        $query .= "WHERE DATE LIKE '".$year."/".sprintf('%02d', $month)."/%' ";
        $query .= 'ORDER BY CODE, DATE';
     
        if ($gDb->DbQuery($query) && $gDb->DbNumRows() != 0)
        {
            header('Content-disposition: filename=visitors_'.$year.'_'.$month.'.sql');
            header('Content-type: application/octetstream');
            header('Pragma: no-cache');
            header('Expires: 0');
     
            while ($gDb->DbNextRow())
            {
                $record = $gDb->Row;
                echo 'INSERT INTO '.$lvc_table_visitors.' (AGENT, REFERER, ADDR, DATE, HOST, REF_HOST) ';
                echo "VALUES ('".$record[0]."','".$record[1]."','".$record[2]."','".$record[3]."','".$record[4]."','".$record[5]."');\n";
            }
            exit;
        }
        else
        {
            $msg = str_replace('{VISITORS_TABLE}', $lvc_table_visitors, $lvm_error_nodata);
        }
    }
    else
    {
        $msg =  $lvm_connection_error;
    }
     
    // error
    header('Content-disposition: filename=error-readme.txt');
    header('Content-type: application/octetstream');
    header('Pragma: no-cache');
    header('Expires: 0');
     
    echo $msg;
    exit;
     
    ?>
    le résutat à l'écran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Warning: Cannot modify header information - headers already sent by (output started at /h.../stats/html/visiteurs-2.0.2/include/header.inc.php:4) in /h.../stats/html/visiteurs-2.0.2/admin/archiver-export.inc.php on line 15
     
    Warning: Cannot modify header information - headers already sent by (output started at /h.../stats/html/visiteurs-2.0.2/include/header.inc.php:4) in /h.../stats/html/visiteurs-2.0.2/admin/archiver-export.inc.php on line 16
     
    Warning: Cannot modify header information - headers already sent by (output started at /h.../stats/html/visiteurs-2.0.2/include/header.inc.php:4) in /h.../stats/html/visiteurs-2.0.2/admin/archiver-export.inc.php on line 17
     
    Warning: Cannot modify header information - headers already sent by (output started at /h.../stats/html/visiteurs-2.0.2/include/header.inc.php:4) in /h.../stats/html/visiteurs-2.0.2/admin/archiver-export.inc.php on line 18
    INSERT INTO visiteurs (AGENT, REFERER, ADDR, DATE, HOST, REF_HOST) VALUES ('IE;5.0;WinNT','','64.210.196.197','2004/03/29 21:12','64.210.196.197',''); INSERT INTO visiteurs (AGENT, REFERER, ADDR, DATE, HOST, REF_HOST) VALUES ('','','217.95.247.168','2004/03/30 13:17','217.95.247.168',''); INSERT INTO visiteurs (AGENT, REFERER, ADDR, DATE, HOST, REF_HOST) VALUES ('','','217.95.250.199','2004/03/30 23:00','pD95FFAC7.dip.t-dialin.net',''); INSERT INTO visiteurs (AGENT, REFERER, ADDR, DATE, HOST, REF_HOST) VALUES ('IE;4.01;Win95','','64.223.33.224','2004/03/31 13:16','pool-64-223-33-224.prov.east.verizon.net','');
    Je ne vois pas ce qu'il faut modifier dans le code php, pour que la fenêtre qui s'ouvrait en php 4.2, s'ouvre aussi en php 4.3...

    Si vous avez des pistes pour mon problème...

    Et en général, je recherche une doc simple qui donne les différences entre php 4.2 et php 4.3.. et aussi les différences entre php 4.3 et php 5... d'ici la fin de l'année, je devrais avoir php 5 !

    Meci
    Anne

  2. #2
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Tu as un espace avant ton code PHP, ça fait une sortie écran, ça envoi les headers et paf erreur

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    je ne vois pas d'espace dans ce script...
    C'est quand j'ai inséré le code dans le post...

    l'appli a pas mal de petit bout de code...

    fichier header.inc.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
      <TITLE> <?php echo $lvm_page_title.' - '.$lvc_site_name; ?> </TITLE>
      <LINK REL=stylesheet TYPE="text/css" HREF="<?php echo $g_relative_path.$lvc_css_file; ?>">
    </HEAD>
     
    <BODY BGCOLOR='#1C2D67' BACKGROUND='images/background.gif'>
     
    <TABLE WIDTH="100%" BORDER="0" BGCOLOR="#7B8FD6" CELLSPACING="0" CELLPADDING="2"><TR>
     
      <TD ALIGN="left" WIDTH="178"><A HREF="http://www.phpinfo.net"><IMG SRC="<?php echo $g_relative_path; ?>images/logo.gif" WIDTH="178" HEIGHT=
    "60" BORDER=0 ALT="Visitez phpInfo.net"></A></TD>
     
      <TD ALIGN="center" WIDTH="100%"><A CLASS='title'><?php echo $lvm_header_title.' '.$lvc_site_name; ?></A></TD>
     
      <TD ALIGN="center" WIDTH="178"><A HREF="http://www.phpinfo.net/?p=logos-vince"><IMG ALIGN="absmiddle" SRC="<?php echo $g_relative_path; ?>i
    mages/elephpant.gif" WIDTH="89" HEIGHT="56" BORDER=0 ALT="L'éléPHPant de Vince"></A>&nbsp;</TD>
     
    </TR></TABLE>
    c'est le début de la page php...

    Avec le script que j'ai donné dans le post avant c'est archiver-export.inc.php

    il doit manquer quelque chose dans le script archiver-export.inc.php pour faire afficher la fenêtre 'ouvrir ou enregistrer le fichier'.
    Cela fonctionne en php 4.2 et plus en php 4.3

    Je ne sais pas comment cela s'appelle les fenêtres qui s'ouvre par-dessus la page pour faire une action...
    Donc pour faire des recherches c'est compliqué...

    anne

  4. #4
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Ah oui en effet, j'ai mal lu le message d'erreur, pourtant je suis le premier à dire qu'il en dit long sur le problème

    Remarque ici c'est le cas il en dit long.

    En gros la fonction header ne peut pas marcher si les headers http ont déjà été envoyés au navigateur du client. Et ils sont envoyés dès qu'un affichage d'html est fait.

    Donc vu que ton fichier header.inc.php contient de l'html, s'il est inclus avant ton appel de la fonction header(), ça va capoter.

    En fait ça ne vient pas vraiment de la version de PHP mais plutôt de sa configuration.

    La solution la plus propre serait de bien séparer traitements et mise en forme pour ne pas avoir d'affichages avant les appels à header().

    Ensuite les solutions crades (donc extrêmement déconseillées) sont :
    - la désactivation des messages d'erreur
    - activer la mise en cache du contenu (voir du côté des fonctions ob_start()) et compagnie, ou même la mise en cache automatique (c'est déjà moins sale que la solution précédente mais peut mieux faire ).

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Quitte à changer de configuration, pourquoi ne pas passer directement à Php 5 ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Le code fonctionne bien en php 4.2...

    Comment fait-on pour afficher la page html avec une fenêtre qui vient par-dessus pour enregistrer ou ouvrir le code qui vient d'être fait...?

    Un petit exemple serait le bien venu...

    Si j'ai bien compris, il y a une personne qui n'a pas modifié le code php...
    J'avais inspéré qu'il avait fait les modifs necessaires...
    il a mis PHP RegisterGlobals enabled sur son serveur, comme il y avait en php 4.2
    pas tip-top au niveau sécurité

    anne

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé le problème.

    Cela vient du php.ini :
    output_buffering = Off
    =>
    output_buffering = On

    et maintenant j'ai le fenêtre d'enregistrement qui s'ouvre et je n'ai plus de message d'erreur

    Anne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de Passage d'un script interne a externe
    Par kowabunga dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/07/2006, 13h57
  2. [PHP-JS] Inserrer du php dans un script javascript
    Par DaD92 dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2006, 01h17
  3. Cherche script d'envoi de mails en PHP
    Par tomchaz dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 30/05/2006, 14h30
  4. passage de données d'une popup vers une page PHP
    Par loukili81 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/03/2006, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo