| | cc30 | Posté le 12/10/2005 @ 15:26 | Petit astucien
569 Messages
| Bonjour [smile] ,
Je voudrai en fait convertir une page en .php en un code javascript, je vais prendre un exemple concret pour que vous compreniez un peu mieu [clindoeil] ce que je recherche [bigsmile] :
Cette page : http://www.mess-france.com/partenaire.php sert à ce code [code]<script language="javascript" src="http://www.mess-france.com/partenaire.php?limit=10" type="text/javascript"></script>[/code]
c'est éxactement ce que je voudrai faire mais moi ma page elle ressenble à sa : http://charles.cc30.free.fr/msn/actu/news.php et je ne sait pas commen faire pour la traduire ...
Je précise de quoi est composé ma table :
Champ Type Interclassement Attributs Null Défaut Extra Action
id mediumint(9) Non auto_increment
titre text latin1_general_ci Non
auteur text latin1_general_ci Non
date text latin1_general_ci Non
date1 text latin1_general_ci Non
heure time Non 00:00:00
texte text latin1_general_ci Non
Voilà voilà, je peut évidament compléter se sujet en vous apportant les éléménts manquants ...
Merci à vous [bierre]
| | |
| |
| Publicité |
|
| | koala01 | Posté le 12/10/2005 à 18:18 | Astucien
4715 Messages
| Salut,
Pour une question de facilité et de compatibilité, tu as franchement intéret à ne pas passer par du javascript, dans l'état actuel de ce que tu as expliqué...
En effet, le javascript est, parfois inexistant, souvent désactivé...
Ceux et celles qui l'ont désactivé et/ou qui naviguent avec un navigateur qui ne le prend pas en charge sont donc pénalisées, alors que dans unn meme temps, tu perds en sécurisation du fait qu'un javascript s'effectue coté client...
Par contre, ce qui peut s'avérer intéressant, c'est de bien veiller à sécuriser la partie qui prend en charge la récupération des paramètres passés en url...
Cela passe entre autre par la vérification du fait que id soit bien un entier, mais aussi par le fait que id ne doit pas etre suppérieur au nombre d'enregistrement [clindoeil] | | | | | cc30 | Posté le 12/10/2005 à 20:05 | Petit astucien
569 Messages
| koala01 a écrit :
Cela passe entre autre par la vérification du fait que id soit bien un entier, mais aussi par le fait que id ne doit pas etre suppérieur au nombre d'enregistrement [clindoeil]
C'est à dire ? | | | | | koala01 | Posté le 13/10/2005 à 19:00 | Astucien
4715 Messages
| hé bien tout simplement, tu vérifie que le parametre soit bien composé de caractères compris entre 0 et 9...
La vérification peut etre de plusieurs genres, mais, le plus facile est sans doute de passer par une expression perl, du genre:
if(ereg("^[0-9]*$", $variable_a_tester))
{
//ici, la variable est uniquement numérique
}
else
{
// ici, ce n'est pas le cas
}
et qui peut très bien etre transformer en une fonction du genre
function isnumeric($n)
{
if (ereg("^[0-9]*$", $n))
{
return true;
}
else
{
return false;
}
}
Il suffira alors, chaque fois que tu voudra vérifier si quelque chose est exclusivement numérique d'utiliser un code du genre
if(isnumeric($variable_a_tester))
{
//la variable est numérique
}
else
{
//la variable n'est pas numérique
}
Ensuite, tu peux utiliser la possibilité de compter les enregistrement d'une table données, grace à une requete du genre
select count from table <where condition>
et vérifier, pour autant qu'aucun enregistrement n'aie été supprimés, que la valeur du paramètre soit en tout cas inférieure ou égale à la valeur obtenue par la requete...
En conjugant les deux vérifications, tu arrivera à un niveau de vérification suffisant pour décourrager la plupart des apprentis hackeurs "fouteurs de m[censure]", pour autant que tu effectue ces vérifications dans un ordre logique (vérifier d'abord que la valeur du parametre soit effectivement numérique, puis, seulement vérifier si la valeur est bien dans la fourchette donnée)
Ces deux vérifications étant faites, tu pourra enfin envoyer la requete à la base de données avec une sécurisation satisfaisante...
En gros, tu finira par un code (utilisant la fonction isnumeric($n) précédemment indiquée)ressemlant à
if(isnumeric($_GET[id]))
{
//pour ne pas trop devoir se casser la tete, on récupere la valeur de id
$identifiant=$_GET[id];
if($identifiant<=mysql_query("select count from table",$informmation_de_connexion))
{
// c'est en ordre, tu peux effectuer la recherche dans la base de données
$sql="select * from table where champ_identifiant=$identifiant";
$cherche=mysql_query($sql,$information_de_connexion);
//placons le résultat dans un tableau
$trouve=mysql_fetch_assoc($cherche);
//y a plus qu'à gérer le tout selon tes besoin
}
else
{
//visiblement le visiteur a modifié la valeur transmise par l'url (en restant dans le numérique)
}
}
else
{
//id n'est pas numérique, le visiteur a chipotté à l'adresse...à toi de voir ce que tu veux faire
}
Et le tour est joué [clindoeil] | | | | | cc30 | Posté le 13/10/2005 à 21:59 | Petit astucien
569 Messages
| [smile] Bon je m'en réfert à mon technitien du PHP qui ce reconnaitra [clindoeil]
Enfin par contre je perciste à voulaire un code en JS tout simplement pour le proposer à d'autres sites sur le web et de cette manière qu'ils puissent l'inserrer dans la page de leur choix et sous le format de leur choix aussi. Tout comme dans l'exemple concret que j'ai cité dans mon primer message.
Merci pour vos réponces [bierre] | | | | | koala01 | Posté le 13/10/2005 à 22:31 | Astucien
4715 Messages
| Il faut avoir conscience d'une chose importante:
Le javascript est, par essence, un langage dit "événementiel"...
Son unique but est de faire réagir le navigateur à des événements tels que le clique, le passage de la souris sur une zone donnée ou le chargement/déchargement de la page...
Cela signifie qu'il ne s'exécute que "coté client" (visiteur)...
Il n'est donc pas en mesure d'attaquer une base de données qui se trouve sur un serveur distant...
D'un autre coté, il ne faut pas non plus oublier qu'il souffre des limitations que j'ai exposées dans mon premier post.
Tout cela pour en arriver à la conclusion que:
1-Si tu veux fournir un code javascript, tu te trouveras de toutes manières confronté au problème non seulement du codage PHP, mais aussi du codage javascript (ce qui revient à faire deux fois le travail)
2- Meme si tu fournis un code javascript que les autres pourraient insérer dans leurs propres pages (parce qu'ils ne disposeraient pas de php chez leur hébergeur), tu devras de toutes manières effectuer le traitement des informations qui se trouvent dans ta base de données directement "chez ton hébergeur", le seul code javascript que tu aurais à fournir étant un code qui permettrait d'accéder au fichier qui fournis les nouvelles
3- tu peux, beaucoup plus facilement, indiquer aux webmasters qui disposent d'un hébergement offrant le php de placer tout simplement un include de la page qui affiche les nouvelles (sous la forme de <? include(' http://toi.hebergeur.com/fichier_nouvelles');?>) ce qui permettra de disposer des nouvelles en évitant les limitations du javascript
4-Le plus facile n'est-il simplement pas de fournir une adresse à insérer pour accéder aux nouvelles, du genre <a href="http://toi.hebergeur.com/nouvelles.php" alt="acc& eacute;der au nouvelles de basar">accéder aux nouvelles de basar</a> [question] | | | | | jeanpierre949 | Posté le 14/10/2005 à 10:44 | Petit astucien
737 Messages
| salut.
quels risques veus-tu encourir par la methode mise en oeuvre. En aucun cas il ne s'agit d'envoyer des informations a la base de données mais d'en recuperer une et l'afficher.Tu peux mettre toutes les ce que tu veux dans l'url rien ne sera inserer dans la db, au pire il pourrait arriver que si les infos transmises soient erronnées que php n'affiche rien ou une page blanche | | | | | cc30 | Posté le 14/10/2005 à 12:55 | Petit astucien
569 Messages
| Ok je voit un peu mais bon je ne conprend pas tout de même quel est le problème avec le code JS en le préparent bien une fois sa dervrais être comme ma page en php elle se renouvelle avec ce qui est dans ma table c'est tout ...
Je pence qu'il y a quelque chose que chacun de notre côté ne devont pas comprendre corretment mais reste a savoir quoi ... | | | | | koala01 | Posté le 14/10/2005 à 17:23 | Astucien
4715 Messages
| Ben, selon moi, l'étape du code javascript n'est purement et simplement pas utile...
A vrai dire, je ne comprends absolument pas pourquoi tu tiens à utiliser le javascript, tout simplement.
A moins que tu me dises que tu souhaites une réaction quelconque à un événement donné, il n'y a pas lieu, selon moi, de passer par le javascript, car c'est faire deux fois le boulot, et se fatiguer pour rien... | | | | | koala01 | Posté le 14/10/2005 à 17:35 | Astucien
4715 Messages
| jeanpierre949 a écrit :
salut.
quels risques veus-tu encourir par la methode mise en oeuvre. En aucun cas il ne s'agit d'envoyer des informations a la base de données mais d'en recuperer une et l'afficher.Tu peux mettre toutes les ce que tu veux dans l'url rien ne sera inserer dans la db, au pire il pourrait arriver que si les infos transmises soient erronnées que php n'affiche rien ou une page blanche
Salut Jean Pierre,
A qui ta remarque est elle destinée[question], car, si c'est à moi, peut etre ne me suis-je pas forcément bien expliqué (hé, ca peut arriver...)
Dans le code que j'ai fournis (vite fait) pour la sécurisation de l'acces à la base de données, les deux cas dans lesquels une mauvaise information serait transmise (id non numérique ou id supérieure à la valeur maximale) sont effectivement pris en compte...
Comme j'essaie de le faire comprendre à cc30, il se fait simplement que le fait de vouloir passer par le javascript ne se justifie purement et simplement pas, à moins que l'on ne souhaite utiliser une gestion événementielle coté client, ce qui, dans l'état actuel de ses explications, n'apparait nulle part...
Un bon programmeur est, par essence, un programmeur fainéant...il ne fait pas grand chose, mais s'arrange pour que ce qu'il fasse soit suffisant pour l'usage attendu [clindoeil]...
A part un attachement sentimental au javascript, il n'y a aucune obligation à passer par lui... Donc autant s'éviter de la peine... | | | | | cc30 | Posté le 14/10/2005 à 17:57 | Petit astucien
569 Messages
| [bigsmile] non le message de Jean Pierre m'était adressé [happy]
Mais c'est que je n'arrive pas à vous expliquer précisément le petit truc qui fait pour quoi je veux du JS.
En fait le JS c'est dans son utilisation bien plus facil que le php ( celon moi ) ce qui permetrait à un webmaster même encore débutent de l'insérer dans la page de son choix sur son site comme il le désir et ainsi le mêtre en forme à sa convenance ( ce qui n'est pas possible si il inclu la page php ).
De plus il faut s'interroger sur le fait que si sa n'était pas si " rentable " alors pour quoi un site aussi populaire que MF se permettrai de proposer une telle chose. | | | | | koala01 | Posté le 14/10/2005 à 21:03 | Astucien
4715 Messages
| Mais ce que tu ne semble pas comprendre, c'est qu'il peut très bien suffire de mettre un code js qui appellera la page concernée sur ton site (qui ne fera que du php), sans pour autant en venir à lui demander d'écrire un code javascript...
Après tout, le but du php (et du javascript dans certaine circonstance) n'est que de fournir un code html susceptible d'être compris par les navigateurs...
Les news récupérées seront en effet (meme si c'est "noyé" dans du code javascript) toujours à la base un code HTML...
Il ne faut pas confondre, finalement, la gestion et l'affichage des informations que tu veux transmettre (qui se fait en php) et l'acces à la page qui gère les informations (ca, éventuellement, cela peut se faire en javascript)...
Mais ce n'est pas la page qui gere et qui provoque l'affichage des informations qui doit s'occuper de générer le javascript qui permet d'y accéder...
Pour essayer de me faire comprendre (car je me rend compte que cette explication n'est pas forcément très claire), je vais prendre un exemple concret...
Mettons que tu aies une page HTML (nommons la logiquement page.htm) qui fournisse un lien (quelle que soit la nature du lien) vers une page qui affiche les nouvelles (nommons la logiquement nouvelles.php (il faut en effet utiliser le php pour gérer les nouvelles qui se trouvent dans la base de données)...
Dans page.htm, tu souhaites fournir au visiteur la possibilité d'accéder aux nouvelles (donc à nouvelle.php), jusque là on est d'accord...
La solution classique consiste en la création d'un simple lien (sous la forme de <a href="nouvelles.php"> ou <a href="nouvelles.php?id=10" si tu veux accéder à la nouvelle "10")
Rien n'empeche d'écrire un javascript qui aurait le meme résultat, voire, qui provoquerait l'inclusion de cette fameuse page nouvelle.php ou nouvelle.php?id=10 ... mais, cela ne reste qu'un chemin fournis pour accéder à notre fichier nouvelle.php...
Ce n'est donc pas nouvelle.php qui doit s'occuper ni de la création du lien classique, ni de la génération du javascript d'insertion...
Eventuellement, ce dont elle peut s'occuper, c'est de l'affichage d'un paragraphe qui dirait
Pour insérer cette nouvelle dans votre propre site, veuillez simplement insérer le code
script language="javascript" src="http://www.mess-france.com/partenaire.php?limit=10" type="text/javascript"></script>
à l'endroit où vous souhaitez la voir apparaitre.
Car, en effet, le but n'est pas de générer réellement le code javascript (qui aurait pour conséquence d'inserer la page en boucle), mais de fournir le code qui permet de l'insérer une fois...
la seule différence, c'est que les < devront etre remplacés par & lt; et les > par & gt; (sans les espaces), et que la valeur donnée par limit (dans l'exemple ci dessus) peut etre fournie par php sous la forme par exemple d'un
<? echo $variable[id];?>
Modifié par koala01 le 14/10/2005 21:12 | | | | | cc30 | Posté le 15/10/2005 à 19:55 | Petit astucien
569 Messages
| Oulà j'ai du mal à saisir ...
Concrètement je veut faire exactement le même principe que eux.
Un JS tout simple avec le quel s'incrit :
JJ/MM : Titre
Et quand on clique sur le titre sa nous renvois sur la page correspondente.
Tout simplement, mais je ne sait pas comment m'y prendre. | | | | | cc30 | Posté le 15/10/2005 à 20:35 | Petit astucien
569 Messages
| Stop ! [bigsmile]
J'ai trouver la solution merci à vous tous pour votre aide !
PS: Jean Pierre je t'ai envoyer un email | | | | | Malcolm | Posté le 15/10/2005 à 21:53 | Astucien
7273 Messages
| koala01 a écrit :
Un bon programmeur est, par essence, un programmeur fainéant...il ne fait pas grand chose, mais s'arrange pour que ce qu'il fasse soit suffisant pour l'usage attendu [clindoeil]...
non, je me permets d'ajouter un bémol ... Car la fainéantise n'est que très relative ... Vu d'un oeil plus optimiste, je parlerais d' efficacité, ceci me semble plus approprié...
En effet, faire en une ligne ce que l'on peut faire en 3 présente l'avantage de synthétiser, de conserver les fonctionnalités, de pouvoir relire et effectuer de la maintenance de manière simple, précise et rapide.
Il en résulte donc, par le biais de ce coté "feignant" une certaine efficacité qui permet d'énoncer tout ceci ... [clindoeil]
EDIT : en sous entendant qu'une ligne contient une instruction, bien qu'on puisse en mettre plusieurs par ligne. Modifié par Malcolm le 16/10/2005 10:10 | | | | | koala01 | Posté le 15/10/2005 à 22:43 | Astucien
4715 Messages
| Malcolm a écrit :
(...)
En effet, faire en une ligne ce que l'on peut faire en 3 présente l'avantage de synthétiser, de conserver les fonctionnalités, de pouvoir relir et effectuer de la maintenance de manière simple, précise et rapide.
(...)
Et sur ce coup là, c'est moi qui mettrai plutot un bémol...
En effet, si tu remplace le terme "ligne" par le terme "instruction", je serai tout à fait d'accord avec toi...
Par contre, meme si cela représente peut etre un peu plus de travail, tu dois reconnaitre que les six lignes suivantes seront plus claires que les deux qui suivront...
les six lignes:
int a;
int b;
int c;
a=3;
b=5;
c=a+b;
les deux lignes:
int a=3,b=5,c;
c=a+b;
Le résultat sera exactemetn le meme, vu qu'il s'agira toujours de déclarer trois entiers, de leurs donner respectivement les valeurs de 3, de 5, et de la somme des deux, mais, noyées dans le reste du code, les deux lignes risquent beaucoup plus de passer "au bleu" lors de la relecture, ce qui fera se poser des questions à celui qui lit le code... | | | | | Malcolm | Posté le 16/10/2005 à 10:09 | Astucien
7273 Messages
| ok pour "insctructions" [clindoeil]
mais bien qu'on puisse "compresser" comme tu le fais, j'avais de manière sous entendue associé l'instruction à la notion de ligne ... Mais il est bon de lever le sous entendu [clindoeil] | | | | | koala01 | Posté le 16/10/2005 à 18:19 | Astucien
4715 Messages
| Justement, j'ai presque tendance à hurler d'horreur quand je vois une écriture compressée telle que celle des deux lignes...
Généralement, quand je dois jeter un oeil au code, la premiere chose que je fais est de reséparer les différentes instructions...
Meme si l'on peut considérer dans une certaine mesure que certains codes ne sont pas destinés à etre relus par d'autres, il faut en effet toujours bien rester conscient que l'on est toujours susceptible de devoir se replonger dans un code "plus tard", pour une raison ou une autre... | | | |
| | Haut de la page |
| | Inscrivez-vous ! |
- Posez vos questions
- Résolvez vos problèmes
- Aidez les autres
- Participez et créez vos discussions
- Dialoguez en privé avec d'autres membres
- Suivez vos sujets préférés
- Affichez les signatures des membres
|
|