AccueilAideRechercherIdentifiez-vousInscrivez-vous

Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
21 Mai 2012 à 21:38:00

Connexion avec identifiant, mot de passe et durée de la session
Rechercher
    avancée

News

Stats
8763 Messages dans 1087 Fils de discussion par 1000 Membres
Dernier membre: totor 94
+  PHP Astux
|-+  Langages Web
| |-+  PHP, ASP ... (serveur)
| | |-+  [Réglé] probleme php
Pages: 1 2 [3]   Bas de page
Imprimer
Auteur Fil de discussion: [Réglé] probleme php  (Lu 3904 fois)
laudu60100
Membre Complet
***
Messages: 119


« Répondre #30 le: 10 Septembre 2010 à 13:06:21 »

Si je pars du principe que tu sais écrire un formulaire HTML ainsi que procéder au traitement PHP du formulaire, alors il te faut savoir comment marche une base de données MySQL (avec un exemple de logiciel permettant de l'exploiter, PHPMyAdmin)

Une fois que t'as vu "les 3 camps" (HTML, PHP, SQL) alors tu peux mixer le tout : un tuto sur PHP + MySQL, mais d'autres scripts peuvent t'aider à voir une utilisation différente, par exemple le compteur de téléchargements.

Ok (deso pour la réponse si tardive mais j'etais un peu occupé) !
J'essaierai ça, ce WE.
Merci en tout cas.
(sinon, le formulaire html, je le maitrise depuis des mois, le traitement php, depuis que tu m'as fait installer WAMP)

-------------------------------------------------------------------

Bon je n'ai pas tout compris, voir même pas du tout.
Je ne cherche pas à creer une base de donné ou chépakoi.
J'aimerai savoir comment par exemple :
J'écris une phrase dans un textarea dans un formulaire html. Je valide avec le bouton submit.
Puis le php récupère les valeurs et ces valeurs sont écries sur la page mais si je ferme la page, le texte disparait. Moi, je veux qu'elles restent ! C'est le principe du livre d'or, j'écrie mon message, puis il est publié sur une page et le message écrie, reste !
Est ce qu'il y a un script tout fais php qui enregistre les valeurs sur une page ? Un truc tout con...

Je vais prendre un exemple concret :
Sur cette page, on écrit le message : http://darkorbit.mavideotek.fr/livredor/Default.aspx
Et le message est publié sur cette page : http://darkorbit.mavideotek.fr/livredor/List.aspx?page=1
« Dernière édition: 10 Septembre 2010 à 18:47:16 par laudu60100 » Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #31 le: 10 Septembre 2010 à 22:23:29 »

bin le principe est très simple

page ecrire.html

- un formulaire HTML qui demande le nom et le message.
- l'action du formulaire est "poster.php"

page poster.php
- récupère les valeurs du formulaire
- ouvre un fichier texte (ou le crée si non existant)
- écrit le message, l'auteur ainsi que la date à la fin du fichier
- affiche "message enregistré !"
- ferme le fichier texte

page lire.php
- lit le fichier texte
- compte le nb de messages, le divise par le Nb par pages pour avoir le nb de pages (ex. il y a 20 messages et 5 par page, ça fera 4 pages)
- en fonction de la page affiche les messages X à X + {nb_par_page}




Petite variante : même principe avec une base de données.

poster.php
- récupère les valeurs du formulaire
- INSERT INTO table_sql (auteur', 'dateheure', 'message') VALUES ('...', '...', '...');
- affiche "message enregistré !"


lire.php
- même principe pour les pages
- lit les enregistrements de la base de X à X + {nb_par_page}

l'avantage en base de données, c'est que t'as pas de souci d'écriture concurrentielle (un fichier texte, si 2 personnes écrivent en même temps, l'une peut écraser ce que remplissait l'autre en enregistrant après)
Journalisée

laudu60100
Membre Complet
***
Messages: 119


« Répondre #32 le: 11 Septembre 2010 à 11:29:22 »

bin le principe est très simple

page ecrire.html

- un formulaire HTML qui demande le nom et le message.
- l'action du formulaire est "poster.php"

page poster.php
- récupère les valeurs du formulaire
- ouvre un fichier texte (ou le crée si non existant)
- écrit le message, l'auteur ainsi que la date à la fin du fichier

- affiche "message enregistré !"
- ferme le fichier texte

page lire.php
- lit le fichier texte
- compte le nb de messages, le divise par le Nb par pages pour avoir le nb de pages (ex. il y a 20 messages et 5 par page, ça fera 4 pages)
- en fonction de la page affiche les messages X à X + {nb_par_page}

Voila ! c'est ça que je ne sais pas faire, et que j'aimerais savoir faire. (je verrais la base de donné après, chaque chose en son temps  Clin d'oeil

3 pages :
ecrire.html :
Code:
<form action="poster.php" method="POST">
<input type="text" name="mot">
<input type="submit">
</form>

poster.php :
Code:
<?php
$message 
$_POST["mot"];

echo 
$message;

// Et ensuite ...
?>
Et je ne sais pas faire la suite...
« Dernière édition: 11 Septembre 2010 à 11:34:12 par laudu60100 » Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #33 le: 13 Septembre 2010 à 20:53:53 »

voir l'exemple 1 Sourire

http://fr.php.net/manual/fr/function.fwrite.php
Journalisée

laudu60100
Membre Complet
***
Messages: 119


« Répondre #34 le: 14 Septembre 2010 à 11:03:52 »

Je n'ai rien compris !  Ind&eacute;ci
Ou dois-je mettre mon $message la dedans ?

fwrite($message) ??
Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #35 le: 15 Septembre 2010 à 19:52:17 »

Ha bah si tu ne sais pas lire une doc, ça commence bien ...  Sourire

Voici leur exemple adapté à ta sauce

Code:

<?php
$filename 
'test.txt';


// Assurons nous que le fichier est accessible en écriture
if (is_writable($filename)) {

    
// Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
    // Le pointeur de fichier est placé à la fin du fichier
    // c'est là que $somecontent sera placé
    
if (!$handle fopen($filename'a')) {
         echo 
"Impossible d'ouvrir le fichier ($filename)";
         exit;
    }

    
// Ecrivons quelque chose dans notre fichier.
    
if (fwrite($handle$message."\n\n") === FALSE) {
        echo 
"Impossible d'écrire dans le fichier ($filename)";
        exit;
    }

    echo 
"L'écriture de ($message) dans le fichier ($filename) a réussi";

    
fclose($handle);

} else {
    echo 
"Le fichier $filename n'est pas accessible en écriture.";
}
?>



Là c'est très basique, il écrit le message dans le fichier. A toi d'y mettre des formes comme tu le veux, par défaut j'ai mis 2 retours chariot après le message.
Journalisée

laudu60100
Membre Complet
***
Messages: 119


« Répondre #36 le: 16 Septembre 2010 à 17:33:56 »

Ha bah si tu ne sais pas lire une doc, ça commence bien ...  Sourire

Voici leur exemple adapté à ta sauce

Code:

<?php
$filename 
'test.txt';


// Assurons nous que le fichier est accessible en écriture
if (is_writable($filename)) {

    
// Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
    // Le pointeur de fichier est placé à la fin du fichier
    // c'est là que $somecontent sera placé
    
if (!$handle fopen($filename'a')) {
         echo 
"Impossible d'ouvrir le fichier ($filename)";
         exit;
    }

    
// Ecrivons quelque chose dans notre fichier.
    
if (fwrite($handle$message."\n\n") === FALSE) {
        echo 
"Impossible d'écrire dans le fichier ($filename)";
        exit;
    }

    echo 
"L'écriture de ($message) dans le fichier ($filename) a réussi";

    
fclose($handle);

} else {
    echo 
"Le fichier $filename n'est pas accessible en écriture.";
}
?>



Là c'est très basique, il écrit le message dans le fichier. A toi d'y mettre des formes comme tu le veux, par défaut j'ai mis 2 retours chariot après le message.

Ok, mais (dsl) avec ce code (tout simple : merci), je mes quoi dans "test.txt" ?
De plus, le $message sera publié sur quel page ? Dans ce code, ou est lire.php ?
Le code que tu as fais, il est dans page poster.php ?

Je suis vraiment désolé mais j'ai du mal à comprendre.
« Dernière édition: 16 Septembre 2010 à 21:15:41 par laudu60100 » Journalisée
laudu60100
Membre Complet
***
Messages: 119


« Répondre #37 le: 16 Septembre 2010 à 19:53:18 »

Encore dsl pour ce post ! (je confond modifier et citer parce que je suis tres actif sur un autre forum et le 1er bouton est "modifier" et le 2em "citer"...)
« Dernière édition: 16 Septembre 2010 à 19:58:54 par laudu60100 » Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #38 le: 18 Septembre 2010 à 23:33:16 »

bon, reprenons.

t'as une page HTML qui va afficher un formulaire => OK

t'as une page php qui va récupérer le formulaire et inscrire son contenu dans un fichier texte => c'est ça que je t'ai mis

et t'as une 3è page qui va lire le fichier texte et l'afficher.

Tant que tu ne sais pas écrire dans le fichier texte, ça ne sert à rien de vouloir l'afficher, ça sera vide.

Le code que je t'ai copié venant de php.net est la page qui va écrire le message du visiteur dans le fichier texte, dont le nom (arbitraire) est "test.txt".
As-tu essayé ce code ? Qu'est-ce que ça donne chez toi ?

Pour ce qui est de la publication après, ça sera fait automatiquement.
Journalisée

laudu60100
Membre Complet
***
Messages: 119


« Répondre #39 le: 19 Septembre 2010 à 09:24:54 »

Ok, ça marche, et je vais faire des petits testes.  Sourire

------------------------------------------------------------------------------------

Regarde ce que j'ai fais ! Grima&ccedil;ant Grima&ccedil;ant Grima&ccedil;ant Grima&ccedil;ant Grima&ccedil;ant

Code:
<?php
$class_span
[0]= 'A';
$class_span[1]= 'B'
$class_span[2]= 'C';
$class_span[3]= 'D';
$class_span[4]= 'E';
$class_span[5]= 'F';
?>


<title>Page.php</title>
<style>
.text_A {color: #00FF00}
.text_B {color: #FF0000}
.text_C {color: #0000FF}
.text_D {color: #FFFF00}
.text_E {color: #00FFFF}
.text_F {color: #FF00FF}
</style>

<form action="Page.php" method="POST">
<input type="text" name="mot" id="mot">
<input type="submit">
</form>

<script>onload = mot.focus()</script>



<?php
if (!isset($_POST["mot"])){}
else {
echo 
"<div style='display:none'>";

$Message $_POST["mot"];

$Message str_replace('<','&lt;',$Message);
$Message str_replace('>','&gt;',$Message);

    
$Message "<BR><span class='text_".$class_span[rand(0,5)]."'>".$Message."</span>";




$filename 'Page.php';


    if (
is_writable($filename))
    {

        if (!
$handle fopen($filename'a')) 
            {
                         exit;
                }

            if (
fwrite($handle$Message."\n") === FALSE)
            {
                       exit;
                }

    
fclose($handle);
    echo 
"<script>window.location = 'Page.php'</script>";

     }
else {}
echo 
"</div>";
}
?>

Il faut appeler cette page : Page.php

------------------------------------------------------------------------------------

J'ai 2 questions :
1) j'ai écrié dans la zone texte un script php et ça a tout foutu en l'air (suffit par exemple de copier le script php de la page dans la zone texte). Comment éviter que "<" et ">" soit pris en conte comme des balises html/js/php etc... ?

Par exemple, la, sur ce message, j'écris : "<a href="www.php-astux.info">clique ici</a>". On ne verra pas ça :
clique ici
mais ça :
<a href="www.php-astux.info">clique ici</a>

Bah moi, on voit le clique ici

-----
Probleme réglé !!!! :
Code:
$Message = $_POST["mot"];

$Message = str_replace('<','&lt;',$Message);
$Message = str_replace('>','&gt;',$Message);

$Message = "<BR><span class='text_".$class_span[rand(0,5)]."'>".$Message."</span>";
(j'ai modifié le code en haut)
-----



2)Je veux par exemple que ce que je rentre la zone texte soit mis dans un tableau :
Code:
$message = "<TR><TD><span class='text_".$class_span[rand(0,5)]."'>".$_POST["mot"]."</span></TD></TR>";

Code:
<Table>
$message se publie ICI
</table>
-----
Probleme réglé !!!! :
avec include () ! ^^
-----

3) J'ai essayé pour la base de donnée et tout, mais je coince dès de debut.
Lorsque tu dis :
Citation
On s'y connecte via une URL, par exemple http://mon_site.tld/phpmyadmin/
donc moi, je suis allé à http://127.0.0.1/phpmyadmin/ et ce que j'obtients n'est pas du tout ce qu'il y a sur ton tuto.
Et je n'ai aucun point de repere. En plus, on ne me demande pas mon login et mdp.

Le probleme serait-il ça ?
Citation
Votre fichier de configuration fait référence à l'utilisateur root sans mot de passe, ce qui correspond à la valeur par défaut de MySQL. Votre serveur MySQL est donc ouvert aux intrusions, et vous devriez corriger ce problème de sécurité.
(message affiché en bas)
Si oui, comment corriger ça ?

Merci d'avance.
« Dernière édition: 20 Septembre 2010 à 16:40:03 par laudu60100 » Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #40 le: 27 Septembre 2010 à 19:42:28 »

pour les chevrons < et >, tu as une fonction PHP sympa comme tout qui te le fait : $texte = htmlspecialchars($text, ENT_NOQUOTES);
(remplace $text par ta variable, pour le reste cf. la doc)

pour mysql, ce que tu as vu montre que tu es déjà connecté. Par défaut si tu installes mysql ton root n'a pas de mot de passe dont tu peux t'y connecter directement. Ton warning n'est pas grave si tu t'en sers juste pour du test.
Journalisée

laudu60100
Membre Complet
***
Messages: 119


« Répondre #41 le: 29 Septembre 2010 à 20:01:37 »

pour les chevrons < et >, tu as une fonction PHP sympa comme tout qui te le fait : $texte = htmlspecialchars($text, ENT_NOQUOTES);
(remplace $text par ta variable, pour le reste cf. la doc)
Oui, c'est mieux !  Souriant
pour mysql, ce que tu as vu montre que tu es déjà connecté. Par défaut si tu installes mysql ton root n'a pas de mot de passe dont tu peux t'y connecter directement. Ton warning n'est pas grave si tu t'en sers juste pour du test.
[/quote]
Mouai...

Pour le moment, je n'ai pas de question !!!!!!!  Grima&ccedil;ant
Journalisée
laudu60100
Membre Complet
***
Messages: 119


« Répondre #42 le: 09 Octobre 2010 à 18:12:20 »

Nouvelle question !!!!  Grima&ccedil;ant Grima&ccedil;ant Grima&ccedil;ant Grima&ccedil;ant
Salut !
En faisant, moi même, mon propre script formulaire de contact (et pas en bidouillant le tiens comme j'ai fais précédament), je me suis aperçut que le saut de ligne n'était pas respecté.
J'ai donc comparé mes 2 codes php (le tien bidouillé et le mien) et j'ai compris pourquoi je n'avais pas le saut de ligne :
Code:
       function Rec($text)
        {
            $text = trim($text); // delete white spaces after & before text
            if (1 === get_magic_quotes_gpc())
            {
                $stripslashes = create_function('$txt', 'return stripslashes($txt);');
            }
            else
            {
                $stripslashes = create_function('$txt', 'return $txt;');
            }

            // magic quotes ?
            $text = $stripslashes($text);
            $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
            $text = nl2br($text);
            return $text;
        };
tadam ! cette fonction magique est la solution à ce problème.

Voici ma question, j'aimerais comprendre cette fonction. En gros, savoir ce quel fait, parce qu'à mon avis, elle ne fait pas que :
-enlever les codes html :
Citation
$text = htmlspecialchars($text, ENT_QUOTES);
-et créer des "<Br />" à chaque fin de ligne :
Citation
Huh

Voila, merci d'avance !  Sourire
« Dernière édition: 09 Octobre 2010 à 18:15:00 par laudu60100 » Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #43 le: 12 Octobre 2010 à 23:40:06 »

cette fonction permet :
1) si l'option "magic quotes" est activée ou non, de renvoyer un texte dont les valeurs spéciales (apostrophes) sont échappées pour ne pas faire de bug dans une éventuelle requête SQL

2) de convertir les caractères spéciaux de l'HTML pour éviter qu'il ne soit interprété (les chevrons et guillemets)

3) remplacer les retours à la ligne par des <br> ou des <br /> selon le doctype utilisé (nl2br = new line to break rule)
Journalisée

Pages: 1 2 [3]   Haut de page
Imprimer
Aller à:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
Amber design by Bloc | XHTML | CSS