Partage
  • Partager sur Facebook
  • Partager sur Twitter

header location-utf8 sans BOM -MARCHE PAS

    25 mai 2018 à 18:02:09

    Bonjour,

    Bon ba voilà, mon header de redirection de page marche sur mon serv local mais pas sur lerveur 1&1.

    Alors j'ai regardé un max de forum à ce sujet et il semble que les deux causes sont: un encodage avec BOM, et un buffering surchargé (?).

    -> sous sublime text, j'ai "save with encoding" : utf-8, mais ça marche toujours pas

    Donc j'imagine que ça vient de cette histoire de buffering qui dépasse mes compétences actuelles..

    EN ATTENDANT, j'aimerai vous soumettre mon code pour que vous me donniez votre avis sur les causes de l'echec de mon header:

    <!DOCTYPE html>
    <html>
    	<head>
    	<title>ajouter entrée</title>
    	<meta charset="utf-8">
    	</head>
    <body>
    	
    		<?php
    				
    			$bdd2 = new PDO('mysql:host=xxxxxxxxxxxxxx.db.1and1.com;dbname=dxxxxxxxxxxxxxxxxx;charset=utf8', 'xxxxxxxxx', 'xxxxxxxxx');
    
    			$prep = $bdd2->prepare ('INSERT INTO eleves (prenom, nom, nationalite, age, email, tel, niveau, objectif, premier_cours) VALUES (?,?,?,?,?,?,?,?,?)');
    
    			$prenom     = ucfirst($_POST['prenom']) ;
    			$nom        = strtoupper($_POST['nom']);
    			$nationalite= $_POST['nationalite'];
    			$age        = $_POST['age'];
    			$email      = $_POST['email'];
    			$tel        = $_POST['tel'];
    			$niveau     = $_POST['niveau'];
    			$objectif   = $_POST['objectif'];
    			$premier_cours=$_POST['premier_cours'];
    
    			$prep -> execute(array ($prenom,$nom,$nationalite,$age,$email,$tel,$niveau,$objectif,$premier_cours) );
    
    			$cherche = $bdd2->query('SELECT MAX(id) AS new_id FROM eleves'); 
    
    			header('location:http://coudert-web.com/liste_eleves.php');
    		?>
    
    
    
    </body>
    </html>

    est-ce qu'une erreur m'aurait echapé? (la requête fonctionne correctement)

    Sinon j'imagine que je dois configurer qqc sur le serveur de 1&1 (?), mais je n'ai aucune idée de quoi ni comment.. si qqn a déjà fait la manip ce serait sympa de me filer un pti coup de main..

    et sinon c'est possible de le faire en JS tout en permettant l'execution de ma requete php/sql? (oui/non)..

    Merci

    -
    Edité par Ivan0123 25 mai 2018 à 18:08:13

    • Partager sur Facebook
    • Partager sur Twitter
      25 mai 2018 à 18:05:53

      >> est-ce qu'une erreur m'aurait echapé?

      oui L1 tu affiches du html donc cela ne peut pas fonctionner. (pas même un espace ) lire la doc à ce sujet.

      http://fr.php.net/manual/fr/function.header.php

      • Partager sur Facebook
      • Partager sur Twitter
        25 mai 2018 à 18:21:41

        j'ai déplacé tout mon bloc php en ligne 1 avant même le !doctype html mais ça ne marche toujours pas.. j'ai meme viré toutes les ligne html pour ne laisser que le php et le header ne fonctionne pas..

        -
        Edité par Ivan0123 25 mai 2018 à 18:25:02

        • Partager sur Facebook
        • Partager sur Twitter
          25 mai 2018 à 18:33:58

          Location avec un L majuscule et/ou un espace après les : (je pense que c'est l'espace après les : qui est obligatoire.)

          PS : d’où provient le commentaire dans le code source générer de la page traitement_eleve.php ? 

          • Partager sur Facebook
          • Partager sur Twitter
            25 mai 2018 à 18:38:17

            ok je vais tester le L et l'espace, sinon tu parle de la "ligne de démarcation"?, euh, elle est en toute derniere ligne après le </html> final, ok je la vire..

            (..test..)

            Prrrtt... quedal

            ou alors j'ai pas attendu assez longtemps que le serv de 1&1 aie renvoyé les fichiers modifés.. je réessaierai au calme mais je crois pas vraiment à un probleme de syntaxe puisque ça marchait en local chez moi..

            bon je vais voir si y a moyen avec du javascript

            -
            Edité par Ivan0123 25 mai 2018 à 18:54:37

            • Partager sur Facebook
            • Partager sur Twitter
              25 mai 2018 à 22:55:57

              Salut !

              « Ça marchait en local chez moi ». Dans ce cas, commence par vérifier les différences de paramètres entre la version de PHP que tu utilisais alors et celle du serveur. Je pense qu'une des différences que tu verras est l'activation de la "tamporisation" de sortie sur ton serveur local.

              Ensuite, est-ce que ce bout de code est totalement autonome, ou tu l'inclus dans un autre script ?

              Enfin, en dernier recours, active programmatiquement l'affichage des erreurs de PHP et éventuellement de PDO, les messages d'erreur sont toujours utiles quand on ne comprend rien  ^^

              • Partager sur Facebook
              • Partager sur Twitter
                26 mai 2018 à 18:35:20

                ok il va falloir que je me plonge dans tout ça, sinon le code que j'ai posté est en effet autonome, cette page sert juste a ajouter une entrée dans ma bdd puis retour au site..

                en attendant je m'en suis sorti avec du javascript, ça affiche une page vide pendant une fraction de seconde mais au moins ça marche..

                thanks all

                ++

                • Partager sur Facebook
                • Partager sur Twitter
                  26 mai 2018 à 18:41:59

                  Bonjour,

                  Pourquoi ne supprimes-tu pas tout le code html ? Il ne sert à, rien...

                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 mai 2018 à 20:07:00

                    uai je sais,  c'est juste que je fais une "ouverture html" de base par habitude quand je commence un nouveau fichier au cas où..

                    bon maintenant pour faire ma redirection j'ai mis du JS dans le head donc chui bien obligé de garder ce bout de html...

                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 mai 2018 à 20:43:14

                      Pas vraiment, mais surtout tu pourrais revenir à ton code de départ en virant l'html ! :)

                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 mai 2018 à 20:49:42

                        ..déjà test mais le header location de Mônseigneur php ne fonctionne pas

                        alors pendant que je vais me prendre la tête à trouver des parametres de serveur quenensais-je ba je fais ça qui fonctionne (y a une requete php avant le !doctype):

                        <!DOCTYPE html>
                        <html>
                        
                        	<head>
                        		<title>delete eleve</title>
                        		<meta charset="utf-8">
                        			<SCRIPT LANGUAGE="JavaScript">  
                        			document.location.href=<?php echo ' "liste_eleves.php?ideleve='.$_GET['ideleve'].'#pos_detail_eleve"';?>
                        			</SCRIPT>
                        	</head>
                        
                        </html>



                        -
                        Edité par Ivan0123 26 mai 2018 à 20:51:13

                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 mai 2018 à 8:00:27

                          Simple et efficace. Aucun HTML vu que c'est inutile :

                          <?php
                          
                          // A mettre dans un fichier à include c'est mieux.
                          try {
                              $bdd = new PDO('', '', '');
                              $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                          } catch (PDOException $e) {
                              // Truc à faire quand erreur
                              exit();
                          }
                          
                          $reqInsertEleve = $bdd->prepare('INSERT INTO eleves (prenom, nom, nationalite, age, email, tel, niveau, objectif, premier_cours)
                              VALUES (:prenom, :nom, :nationalite, :age, :email, :tel, :niveau, :objectif, :premier_cours)');
                          
                          // Syntaxe PHP 7 (oui il faut bien évoluer de nos jour ^^)
                          $reqInsertEleve->execute([
                              ':prenom' => $_POST['prenom'] ?? null, // On fera le ucfirst à l'affichage
                              ':nom' => $_POST['nom'] ?? null, // De même que strtoupper
                              ':nationalite' => $_POST['nationalite'] ?? null,
                              ':age' => $_POST['age'] ?? null,
                              ':email' => $_POST['email'] ?? null,
                              ':tel' => $_POST['tel'] ?? null,
                              ':niveau' => $_POST['niveau'] ?? null,
                              ':objectif' => $_POST['objectif'] ?? null,
                              ':premier_cours' => $_POST['premier_cours'] ?? null
                          ]);
                          
                          $newIdEleve = (int) $bdd->lastInsertId();
                          header('Location: /liste_eleves.php?id='.$newIdEleve);
                          exit();
                          

                          Bonne journée !

                          -
                          Edité par quenti77 27 mai 2018 à 8:01:33

                          • Partager sur Facebook
                          • Partager sur Twitter
                            27 mai 2018 à 10:42:24

                            ah ouai mais moi je suis deb alors faut que je réapprenne une syntaxe que j'ai pas intégré encore l'ancienne déjà bon enfin wesh que diable..

                            Bon merci pour toutes vos réponses,  je vais mettre de l'ordre dans tout ça et voir ce qui marche... mais aujourd'hui c'est dimanche barbeuc chez les copains :p

                            • Partager sur Facebook
                            • Partager sur Twitter

                            header location-utf8 sans BOM -MARCHE PAS

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown