[{"data":1,"prerenderedAt":819},["ShallowReactive",2],{"page-\u002Fphp\u002Fpremiers-pas":3,"pieces-php":775,"autour-\u002Fphp\u002Fpremiers-pas":800,"prerequis-\u002Fphp\u002Fpremiers-pas":805,"plan-php":808},{"id":4,"title":5,"body":6,"description":745,"extension":746,"ligne":82,"meta":747,"motsCles":748,"navigation":463,"niveau":753,"path":754,"prerequis":755,"ressources":757,"seo":766,"sources":767,"stem":773,"__hash__":774},"docs\u002Fphp\u002F01.premiers-pas.md","Premiers pas en PHP",{"type":7,"value":8,"toc":732},"minimark",[9,14,36,40,44,55,58,62,65,87,90,94,101,126,133,140,160,166,170,177,347,353,365,369,376,408,411,415,425,486,497,500,524,528,548,551,555,562,608,612,615,655,665,678,682,728],[10,11,13],"h2",{"id":12},"ce-que-tu-vas-apprendre","Ce que tu vas apprendre",[15,16,17,21,29],"ul",{},[18,19,20],"li",{},"Ce que fait un langage serveur et en quoi il diffère du HTML.",[18,22,23,24,28],{},"Lancer un site PHP chez toi avec ",[25,26,27],"code",{},"php -S localhost:8000",".",[18,30,31,32,35],{},"Afficher du texte avec ",[25,33,34],{},"echo"," et ranger une valeur dans une variable.",[10,37,39],{"id":38},"un-langage-qui-tourne-sur-le-serveur","Un langage qui tourne sur le serveur",[41,42,43],"p",{},"Une page HTML est envoyée telle quelle au navigateur. Elle ne change jamais. Avec PHP, le serveur lit d'abord ton fichier, exécute le code qu'il contient, puis envoie le HTML obtenu.",[41,45,46,50,51,54],{},[47,48,49],"strong",{},"PHP"," est un langage de programmation exécuté côté ",[47,52,53],{},"serveur",", c'est-à-dire sur la machine qui héberge le site. Le visiteur ne voit jamais le code PHP, seulement son résultat.",[41,56,57],{},"C'est ce qui permet d'afficher la liste des recettes lue dans une base de données, ou de réagir à un formulaire.",[10,59,61],{"id":60},"installer-php","Installer PHP",[41,63,64],{},"Ce cours utilise PHP 8.5, la version stable actuelle (8.5.12, publiée le 22 octobre 2026). Les téléchargements sont sur php.net. Une fois installé, vérifie dans un terminal :",[66,67,72],"pre",{"className":68,"code":69,"language":70,"meta":71,"style":71},"language-bash shiki shiki-themes github-light-default github-dark-default github-dark-default","php -v\n","bash","",[25,73,74],{"__ignoreMap":71},[75,76,79,83],"span",{"class":77,"line":78},"line",1,[75,80,82],{"class":81},"sIXEE","php",[75,84,86],{"class":85},"s5iOY"," -v\n",[41,88,89],{},"Si le terminal affiche un numéro de version, tout est prêt.",[10,91,93],{"id":92},"lancer-le-serveur-intégré","Lancer le serveur intégré",[41,95,96,97,100],{},"PHP embarque un petit serveur web pour le développement. Crée un dossier ",[25,98,99],{},"recettes-php",", place-toi dedans, puis lance :",[66,102,104],{"className":68,"code":103,"language":70,"meta":71,"style":71},"cd recettes-php\nphp -S localhost:8000\n",[25,105,106,115],{"__ignoreMap":71},[75,107,108,111],{"class":77,"line":78},[75,109,110],{"class":85},"cd",[75,112,114],{"class":113},"shWOn"," recettes-php\n",[75,116,118,120,123],{"class":77,"line":117},2,[75,119,82],{"class":81},[75,121,122],{"class":85}," -S",[75,124,125],{"class":113}," localhost:8000\n",[41,127,128,129,132],{},"Ouvre ",[25,130,131],{},"http:\u002F\u002Flocalhost:8000"," dans ton navigateur. Le serveur sert les fichiers du dossier courant. Pour arrêter, tape Ctrl+C dans le terminal.",[41,134,135,136,139],{},"Si ton site est rangé dans un sous-dossier, indique-le avec ",[25,137,138],{},"-t"," :",[66,141,143],{"className":68,"code":142,"language":70,"meta":71,"style":71},"php -S localhost:8000 -t public\u002F\n",[25,144,145],{"__ignoreMap":71},[75,146,147,149,151,154,157],{"class":77,"line":78},[75,148,82],{"class":81},[75,150,122],{"class":85},[75,152,153],{"class":113}," localhost:8000",[75,155,156],{"class":85}," -t",[75,158,159],{"class":113}," public\u002F\n",[161,162,163],"warning",{},[41,164,165],{},"Le manuel précise que ce serveur est expérimental. Il sert à développer chez toi, jamais à publier un site ni à être ouvert sur un réseau public.",[10,167,169],{"id":168},"ta-première-page","Ta première page",[41,171,172,173,176],{},"Crée ",[25,174,175],{},"index.php",". Un fichier PHP peut mélanger du HTML et du code :",[66,178,181],{"className":179,"code":180,"filename":175,"language":82,"meta":71,"style":71},"language-php shiki shiki-themes github-light-default github-dark-default github-dark-default","\u003C!DOCTYPE html>\n\u003Chtml lang=\"fr\">\n\u003Chead>\n  \u003Cmeta charset=\"utf-8\">\n  \u003Ctitle>Mes recettes\u003C\u002Ftitle>\n\u003C\u002Fhead>\n\u003Cbody>\n  \u003Ch1>Bienvenue\u003C\u002Fh1>\n  \u003C?php echo \"Bonjour depuis le serveur !\"; ?>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[25,182,183,198,217,227,246,270,279,289,308,329,338],{"__ignoreMap":71},[75,184,185,189,192,195],{"class":77,"line":78},[75,186,188],{"class":187},"sOnC1","\u003C!",[75,190,191],{"class":85},"DOCTYPE",[75,193,194],{"class":85}," html",[75,196,197],{"class":187},">\n",[75,199,200,203,206,209,212,215],{"class":77,"line":117},[75,201,202],{"class":187},"\u003C",[75,204,205],{"class":85},"html",[75,207,208],{"class":85}," lang",[75,210,211],{"class":187},"=",[75,213,214],{"class":113},"\"fr\"",[75,216,197],{"class":187},[75,218,220,222,225],{"class":77,"line":219},3,[75,221,202],{"class":187},[75,223,224],{"class":85},"head",[75,226,197],{"class":187},[75,228,230,233,236,239,241,244],{"class":77,"line":229},4,[75,231,232],{"class":187},"  \u003C",[75,234,235],{"class":85},"meta",[75,237,238],{"class":85}," charset",[75,240,211],{"class":187},[75,242,243],{"class":113},"\"utf-8\"",[75,245,197],{"class":187},[75,247,249,251,254,257,260,263,266,268],{"class":77,"line":248},5,[75,250,232],{"class":187},[75,252,253],{"class":85},"title",[75,255,256],{"class":187},">",[75,258,259],{"class":85},"Mes",[75,261,262],{"class":85}," recettes",[75,264,265],{"class":187},"\u003C\u002F",[75,267,253],{"class":85},[75,269,197],{"class":187},[75,271,273,275,277],{"class":77,"line":272},6,[75,274,265],{"class":187},[75,276,224],{"class":85},[75,278,197],{"class":187},[75,280,282,284,287],{"class":77,"line":281},7,[75,283,202],{"class":187},[75,285,286],{"class":85},"body",[75,288,197],{"class":187},[75,290,292,294,297,299,302,304,306],{"class":77,"line":291},8,[75,293,232],{"class":187},[75,295,296],{"class":85},"h1",[75,298,256],{"class":187},[75,300,301],{"class":85},"Bienvenue",[75,303,265],{"class":187},[75,305,296],{"class":85},[75,307,197],{"class":187},[75,309,311,314,316,319,322,326],{"class":77,"line":310},9,[75,312,313],{"class":187},"  \u003C?",[75,315,82],{"class":85},[75,317,318],{"class":85}," echo",[75,320,321],{"class":113}," \"Bonjour depuis le serveur !\"",[75,323,325],{"class":324},"scfrF","; ",[75,327,328],{"class":187},"?>\n",[75,330,332,334,336],{"class":77,"line":331},10,[75,333,265],{"class":187},[75,335,286],{"class":85},[75,337,197],{"class":187},[75,339,341,343,345],{"class":77,"line":340},11,[75,342,265],{"class":187},[75,344,205],{"class":85},[75,346,197],{"class":187},[41,348,349,350,28],{},"Recharge la page : le message s'affiche. Fais « Afficher le code source » dans le navigateur : tu ne verras que le HTML, plus aucune trace de ",[25,351,352],{},"\u003C?php",[41,354,355,356,358,359,362,363,28],{},"Le code PHP se place entre ",[25,357,352],{}," et ",[25,360,361],{},"?>",". En dehors de ces balises, le texte part tel quel vers le navigateur. Dans un fichier qui ne contient que du PHP, on omet la balise fermante ",[25,364,361],{},[10,366,368],{"id":367},"afficher-avec-echo","Afficher avec echo",[41,370,371,375],{},[47,372,373],{},[25,374,34],{}," est l'instruction qui envoie du texte dans la page. Chaque instruction PHP se termine par un point-virgule.",[66,377,379],{"className":179,"code":378,"language":82,"meta":71,"style":71},"\u003C?php\necho \"Tarte aux pommes\";\necho \"\u003Cp>Une recette simple.\u003C\u002Fp>\";\n",[25,380,381,389,399],{"__ignoreMap":71},[75,382,383,386],{"class":77,"line":78},[75,384,385],{"class":187},"\u003C?",[75,387,388],{"class":85},"php\n",[75,390,391,393,396],{"class":77,"line":117},[75,392,34],{"class":85},[75,394,395],{"class":113}," \"Tarte aux pommes\"",[75,397,398],{"class":324},";\n",[75,400,401,403,406],{"class":77,"line":219},[75,402,34],{"class":85},[75,404,405],{"class":113}," \"\u003Cp>Une recette simple.\u003C\u002Fp>\"",[75,407,398],{"class":324},[41,409,410],{},"Tu peux y mettre du HTML : il est envoyé au navigateur comme le reste.",[10,412,414],{"id":413},"les-variables","Les variables",[41,416,417,418,421,422,28],{},"Une ",[47,419,420],{},"variable"," est une boîte nommée qui contient une valeur. En PHP, son nom commence par ",[25,423,424],{},"$",[66,426,428],{"className":179,"code":427,"language":82,"meta":71,"style":71},"\u003C?php\n$titre = \"Tarte aux pommes\";\n$duree = 45;\n\necho \"Recette : $titre, $duree minutes.\";\n",[25,429,430,436,447,459,465],{"__ignoreMap":71},[75,431,432,434],{"class":77,"line":78},[75,433,385],{"class":187},[75,435,388],{"class":85},[75,437,438,441,443,445],{"class":77,"line":117},[75,439,440],{"class":324},"$titre ",[75,442,211],{"class":187},[75,444,395],{"class":113},[75,446,398],{"class":324},[75,448,449,452,454,457],{"class":77,"line":219},[75,450,451],{"class":324},"$duree ",[75,453,211],{"class":187},[75,455,456],{"class":85}," 45",[75,458,398],{"class":324},[75,460,461],{"class":77,"line":229},[75,462,464],{"emptyLinePlaceholder":463},true,"\n",[75,466,467,469,472,475,478,481,484],{"class":77,"line":248},[75,468,34],{"class":85},[75,470,471],{"class":113}," \"Recette : ",[75,473,474],{"class":324},"$titre",[75,476,477],{"class":113},", ",[75,479,480],{"class":324},"$duree",[75,482,483],{"class":113}," minutes.\"",[75,485,398],{"class":324},[41,487,488,489,358,491,493,494],{},"Entre guillemets doubles, PHP remplace ",[25,490,474],{},[25,492,480],{}," par leur valeur. Le résultat est : ",[25,495,496],{},"Recette : Tarte aux pommes, 45 minutes.",[41,498,499],{},"Quelques règles de nommage :",[501,502,503,512,515],"ol",{},[18,504,505,506,508,509,28],{},"Le nom commence par ",[25,507,424],{},", puis une lettre ou ",[25,510,511],{},"_",[18,513,514],{},"Il ne contient pas d'espace ni de tiret.",[18,516,517,518,358,520,523],{},"Majuscules et minuscules comptent : ",[25,519,474],{},[25,521,522],{},"$Titre"," sont deux variables.",[10,525,527],{"id":526},"où-ranger-les-fichiers","Où ranger les fichiers",[41,529,530,531,533,534,536,537,540,541,544,545,28],{},"Pour ce cours, garde tout simple : un dossier ",[25,532,99],{}," avec un seul fichier ",[25,535,175],{}," à la racine. L'adresse ",[25,538,539],{},"http:\u002F\u002Flocalhost:8000\u002F"," affiche alors ce fichier. Un fichier ",[25,542,543],{},"contact.php"," placé à côté sera accessible à l'adresse ",[25,546,547],{},"http:\u002F\u002Flocalhost:8000\u002Fcontact.php",[41,549,550],{},"Le serveur lit le fichier à chaque visite. Tu modifies le code, tu recharges la page, et tu vois le résultat tout de suite, sans redémarrer.",[10,552,554],{"id":553},"les-commentaires","Les commentaires",[41,556,557,558,561],{},"Un ",[47,559,560],{},"commentaire"," est du texte ignoré par PHP, écrit pour toi ou pour tes collègues.",[66,563,565],{"className":179,"code":564,"language":82,"meta":71,"style":71},"\u003C?php\n\u002F\u002F Une ligne de commentaire\n$portions = 4; \u002F\u002F à la fin d'une ligne\n\n\u002F* Un commentaire\n   sur plusieurs lignes *\u002F\n",[25,566,567,573,579,594,598,603],{"__ignoreMap":71},[75,568,569,571],{"class":77,"line":78},[75,570,385],{"class":187},[75,572,388],{"class":85},[75,574,575],{"class":77,"line":117},[75,576,578],{"class":577},"sd6ml","\u002F\u002F Une ligne de commentaire\n",[75,580,581,584,586,589,591],{"class":77,"line":219},[75,582,583],{"class":324},"$portions ",[75,585,211],{"class":187},[75,587,588],{"class":85}," 4",[75,590,325],{"class":324},[75,592,593],{"class":577},"\u002F\u002F à la fin d'une ligne\n",[75,595,596],{"class":77,"line":229},[75,597,464],{"emptyLinePlaceholder":463},[75,599,600],{"class":77,"line":248},[75,601,602],{"class":577},"\u002F* Un commentaire\n",[75,604,605],{"class":77,"line":272},[75,606,607],{"class":577},"   sur plusieurs lignes *\u002F\n",[10,609,611],{"id":610},"mélanger-php-et-html","Mélanger PHP et HTML",[41,613,614],{},"Tu peux répéter les balises PHP dans une même page, par exemple pour afficher une variable dans un titre :",[66,616,618],{"className":179,"code":617,"filename":175,"language":82,"meta":71,"style":71},"\u003C?php $nom = \"Tarte aux pommes\"; ?>\n\u003Ch1>\u003C?= $nom ?>\u003C\u002Fh1>\n",[25,619,620,637],{"__ignoreMap":71},[75,621,622,624,626,629,631,633,635],{"class":77,"line":78},[75,623,385],{"class":187},[75,625,82],{"class":85},[75,627,628],{"class":324}," $nom ",[75,630,211],{"class":187},[75,632,395],{"class":113},[75,634,325],{"class":324},[75,636,328],{"class":187},[75,638,639,641,643,646,648,651,653],{"class":77,"line":117},[75,640,202],{"class":187},[75,642,296],{"class":85},[75,644,645],{"class":187},">\u003C?=",[75,647,628],{"class":324},[75,649,650],{"class":187},"?>\u003C\u002F",[75,652,296],{"class":85},[75,654,197],{"class":187},[41,656,657,660,661,664],{},[25,658,659],{},"\u003C?= $nom ?>"," est un raccourci pour ",[25,662,663],{},"\u003C?php echo $nom; ?>",". Il est très courant dans les pages HTML.",[666,667,668],"tip",{},[41,669,670,671,674,675,677],{},"Si tu vois une page blanche ou le code PHP brut, vérifie que le fichier se termine par ",[25,672,673],{},".php"," et que tu l'ouvres via ",[25,676,131],{},", pas en double-cliquant dessus.",[10,679,681],{"id":680},"à-retenir","À retenir",[15,683,684,687,692,703,712,718],{},[18,685,686],{},"PHP s'exécute sur le serveur : le navigateur ne reçoit que le HTML produit.",[18,688,689,691],{},[25,690,27],{}," lance un serveur de développement dans le dossier courant, réservé à ton poste.",[18,693,694,695,358,697,699,700,28],{},"Le code PHP s'écrit entre ",[25,696,352],{},[25,698,361],{},", chaque instruction finit par ",[25,701,702],{},";",[18,704,705,707,708,711],{},[25,706,34],{}," affiche du texte, ",[25,709,710],{},"\u003C?= ... ?>"," est son raccourci dans le HTML.",[18,713,714,715,717],{},"Une variable commence par ",[25,716,424],{}," et PHP la remplace par sa valeur entre guillemets doubles.",[18,719,720,721,724,725,28],{},"Les commentaires s'écrivent avec ",[25,722,723],{},"\u002F\u002F"," ou ",[25,726,727],{},"\u002F* ... *\u002F",[729,730,731],"style",{},"html pre.shiki code .sIXEE, html code.shiki .sIXEE{--shiki-light:#953800;--shiki-default:#FFA657;--shiki-dark:#FFA657}html pre.shiki code .s5iOY, html code.shiki .s5iOY{--shiki-light:#0550AE;--shiki-default:#79C0FF;--shiki-dark:#79C0FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .shWOn, html code.shiki .shWOn{--shiki-light:#0A3069;--shiki-default:#A5D6FF;--shiki-dark:#A5D6FF}html pre.shiki code .sOnC1, html code.shiki .sOnC1{--shiki-light:#CF222E;--shiki-default:#FF7B72;--shiki-dark:#FF7B72}html pre.shiki code .scfrF, html code.shiki .scfrF{--shiki-light:#1F2328;--shiki-default:#E6EDF3;--shiki-dark:#E6EDF3}html pre.shiki code .sd6ml, html code.shiki .sd6ml{--shiki-light:#6E7781;--shiki-default:#8B949E;--shiki-dark:#8B949E}",{"title":71,"searchDepth":117,"depth":219,"links":733},[734,735,736,737,738,739,740,741,742,743,744],{"id":12,"depth":117,"text":13},{"id":38,"depth":117,"text":39},{"id":60,"depth":117,"text":61},{"id":92,"depth":117,"text":93},{"id":168,"depth":117,"text":169},{"id":367,"depth":117,"text":368},{"id":413,"depth":117,"text":414},{"id":526,"depth":117,"text":527},{"id":553,"depth":117,"text":554},{"id":610,"depth":117,"text":611},{"id":680,"depth":117,"text":681},"Comprendre ce que fait un langage serveur, lancer le serveur intégré de PHP et afficher ta première page avec des variables.","md",{},[749,750,751,752,34,420,560,175],"langage serveur","php -S","serveur intégré","balises PHP","debutant","\u002Fphp\u002Fpremiers-pas",[756],"\u002Fhtml\u002Fune-page-web",[758,762],{"nom":759,"url":760,"type":761},"Manuel PHP en français, serveur web interne","https:\u002F\u002Fwww.php.net\u002Fmanual\u002Ffr\u002Ffeatures.commandline.webserver.php","doc",{"nom":763,"url":764,"type":765},"OpenClassrooms, Concevez votre site web avec PHP et MySQL","https:\u002F\u002Fopenclassrooms.com\u002Ffr\u002Fcourses\u002F918836-concevez-votre-site-web-avec-php-et-mysql","cours",{"title":5,"description":745},[768,770],{"nom":769,"url":760},"Manuel PHP, serveur web interne",{"nom":771,"url":772},"Manuel PHP","https:\u002F\u002Fwww.php.net\u002Fmanual\u002Ffr\u002F","php\u002F01.premiers-pas","WjT3k5Da8xDIKHEl0-bnhzLi2OqgJJ-lzEKzMzMJLGU",[776,777,781,785,789,793,797],{"path":754,"title":5,"stem":773},{"path":778,"title":779,"stem":780},"\u002Fphp\u002Ftypes-et-chaines","Types, chaînes et conditions","php\u002F02.types-et-chaines",{"path":782,"title":783,"stem":784},"\u002Fphp\u002Fboucles-et-tableaux","Boucles et tableaux","php\u002F03.boucles-et-tableaux",{"path":786,"title":787,"stem":788},"\u002Fphp\u002Ffonctions-et-objets","Fonctions et objets","php\u002F04.fonctions-et-objets",{"path":790,"title":791,"stem":792},"\u002Fphp\u002Fformulaires","Formulaires et sécurité","php\u002F05.formulaires",{"path":794,"title":795,"stem":796},"\u002Fphp\u002Fpdo-et-composer","Base de données avec PDO et Composer","php\u002F06.pdo-et-composer",{"path":798,"title":49,"stem":799},"\u002Fphp","php\u002Findex",[801,803],{"title":49,"path":798,"stem":799,"description":802,"children":-1},"Mémo de PHP 8.5, du serveur intégré à PDO et Composer, avec des tableaux et des extraits courts.",{"title":779,"path":778,"stem":780,"description":804,"children":-1},"Découvrir les types de valeurs de PHP, manipuler des chaînes de caractères et prendre des décisions avec if et match.",[806],{"path":756,"title":807,"ligne":205},"Qu'est-ce que HTML ?",[809,810,811,812,814,815,817],{"path":754,"title":5,"niveau":753,"stem":773},{"path":778,"title":779,"niveau":753,"stem":780},{"path":782,"title":783,"niveau":753,"stem":784},{"path":786,"title":787,"niveau":813,"stem":788},"intermediaire",{"path":790,"title":791,"niveau":813,"stem":792},{"path":794,"title":795,"niveau":816,"stem":796},"avance",{"path":798,"title":49,"niveau":818,"stem":799},"memo",1794583448083]