N'hésitez pas à me donner vos impressions,
je le modifie si nécessaire avant sa publication finale. ;)
Version imprimable
N'hésitez pas à me donner vos impressions,
je le modifie si nécessaire avant sa publication finale. ;)
je dirai simplement: :lahola:
Je viens de faire une maj des sources à 23h13 : Le formulaire d'inscription ne s'affichait pas au 1er lancement avec tous les champs. J'ai aussi dû faire attention au lancement sans connection internet pour qu'il n'y ait pas de problème... Bref, obligé de tenir compte de toutes les combinaisons avec les paramètres AutoStart et AutoValid aussi, ça n'a pas été facile. Maintenant, tout semble fonctionner : Le formulaire d'inscription ne s'affiche que si la connection internet est ok, à+
gros boulot, bravo
Le tuto est surtout la 1ère page, donc rien de très compliqué en soit. Les 2 autres pages sont pour illustrer l'utilisation de cette méthode. J'espère surtout que ça vous sera utile. En tous les cas, je compte utiliser cet espace membre pour programmer le tchat de mon jeu d'échec; Je devais donc le programmer quoiqu'il en soit et je voulais vous en faire profiter, à+Citation:
Envoyé par jlf
Salut,
Voici le tutoriel au gabari : http://sub0.developpez.com/tutoriel/delphp/
Non, le problème est toujours le même -> On est obligé d'attendre que la session précédente soit périmée avant de pouvoir se reconnecter dans le cas où l'on ne quitte pas le programme proprement.Citation:
Envoyé par rezuss
Je pensais à quelque chose : Il faudrait que le serveur puisse tracer l'ip du client pour savoir si il est connecté ou non... ou bien que le serveur demande quelque chose au client et si le client ne répond pas, en déduire qu'il n'est pas connecté... faut que je fasse des essais.
Une solution éventuellement serait de diminuer la durée de vie de la session à 30 secondes par exemple et de demander à Delphi de faire régulièrement une requête juste pour garder en vie la session...
à+
Pour info, suite à un message privé du membre ero-sennin qui a trouvé des «erreurs» dans le code. En fait, il s'agit d'un bug généré à cause d'une directive de compilation non activée par défaut dans Delphi ($J)... J'ai donc mis à jour le code source des unités en ajoutant :
{X+,J+}
Je l'avais déjà fait dans le fichier DPR des projets, mais apparemment, Delphi n'en tient pas compte. J'ai également ajouté {$WARNINGS OFF} dans le code source des unités car il y a des messages d'avertissement lors de la compilation, sans gravité mais qui peuvent dérouter les débutants.
à+
Merci Sub0,
N'ayant pas eu beaucoup de temps, je peux dire que pour le peu de tests que j'ai effectué, ca tourne bien chez moi!
Encore merci Sub0 pour cet article!
J'espère que cet article et ces démos vous serviront, j'espère aussi que j'ai été assez clair et précis dans mes explications, j'ai fait de mon mieux en gardant à l'esprit que ce tuto sera aussi lu par des débutants... ;)
Vos questions, remarques ou suggestions m'aideront à le paufiner, à+
ps : Ce n'est pas {$Warnings off} mais {$Hints off} qu'il fallait mettre, je corrigerai tout à l'heure.
Seriez-vous intéressés par une démo d'upload de fichier avec la classe THttpPost ?
• Delphi permet de dépasser la limité des 2Mo...
• L'interruption et la reprise d'un téléchargement sont possibles.
• Il est également possible d'uploader plusieurs fichiers en simultanné.
• Avec un compo d'archivage ZIP, compresser les fichiers pendant l'upload.
• Afficher la progression de chaque upload.
• L'espace membre de la 1ère démo pourra s'intégrer très facilement afin de protéger cette fonction.
• Je peux par la suite programmer le download aussi...
Salut Sub0 et merci pour ce boulot.Citation:
Envoyé par Sub0
Une démo d'upload m'intéresserait effectivement.
Personnelement je serais aussi interressé par une telle démo !
Encore merci pour ce tuto ! (très très bon !!! :D )
xenos
Voici l'unité Delphp intégrant les fonctions d'upload http.
En théorie, il n'y a aucune limite de taille, mais malgré que je n'utilise que des fonctions d'accès au disque (TFileStream + FSeek), j'obtiens une erreur de mémoire virtuelle avec des fichiers très volumineux. Je pense qu'il faudrait regarder du côté de ce sujet pour l'upload des gros fichiers, mais cela complique pas mal les choses qu'en même...
http://sub0.developpez.com/delphp/uploadunit2.zip
• Installer le script "upload.php" sur votre serveur
• Définir l'url du script dans Unit1.pas
super sub0, plus rapide que l'éclair...
merci à toi, je vais regarder l'upload
Je te conseille de retélécharger l'archive, je viens de faire une correction importante.
[EDIT] J'ai effectué l'upload d'une video AVI de 700Mo en 25 minutes. Le souci, c'est qu'il manque quelques octets ce qui ne se produit pas avec des fichiers plus petits. Je vais essayer de trouver une solution à ce problème...
Cette fois-ci, je le tiens ! :D uploadunit2.zip
L'upload des gros fichiers fonctionne. J'ai aussi ajouté la fonction permettant de reprendre un upload si une erreur survient, il suffit que la case "rewrite" soit décochée. Pour info, j'ai uploadé 700Mo en 10 minutes à peu près (en local avec Wamp5) en générant volontairement quelques erreurs pour reprendre le téléchargement... tout semble au point. Maintenant, si cette fonction d'upload vous intéresse toujours, je peux l'ajouter à DELPHP...
Salut Sub0,
Je vois qu'en ce moment tu bosses énormément :D ! Je trouve l'idée de l'upload très intéressante! Pour ce qui concerne l'intégration à DelPHP, pourquoi pas !
Beau travail Sub!
Bonne Soirée ;)
Les fonctions d'upload et download permettront à terme de faire des sauvegardes et restaurations de la base de données (fichiers SQL)... Par contre, je ne pense pas que l'upload simultanné soit bien utile finalement. Je programmerais plutôt l'upload en série d'une liste de fichiers. Pour info, il est envisageable d'ajouter SSL pour plus de sécurité.
Cher sub0 !
Je suis très heureux quand j'ai appris de vous tellement ! Merci beaucoup faire uploadunit2 = Delphes interactif, PHP. Mais le visage du problème I ici est des fuites de mémoire. Lorsque je télécharge plus, les utilisations de mem augmentent... J'ai essayé de libérer HttpPost1 ou HttpPost1.FStream mais ne peux pas toujours. Svp aide.
Merci encore.
Dans les Projets que l'on développe dans ma société, l'échange de données va de plus mal sécurisés au un peu mieux, comme des fichiers csv zippés sur un SFTP, les IP étant limités et fixes chiants non, du tunneling SSH entre l'application Delphi et la base MySQL et enfin, des WebService PHP sur HTTPS ...
juste, je n'ai pas étudié le code (je viens juste de voir l'article et je n'ai pas le temps), mais pour les résultat requêtes, tu les reçois comment ? XML pour TClientDataSet ? Format propriétaire ? et la Base Locale ?
C'est très interressant, car on a bcp de problèmatique d'échange de données, pour le moment, on voudrait ne faire que du Tunnel SSH mais avec le firewall parano, seul quelques IP fixes sont autorisées ... mais une solution rapide avec du PHP, cela peut être interressant surtout avec du XML pour TClientDataSet ... un provider DB en PHP, cela pourrait avoir bcp de succès ...
@dongbk : Salut! Il se peut que le programme ne soit pas très optimisé. Le principal objectif était d'expliquer la méthode : En gros, utiliser Delphi pour développer son propre navigateur et pouvoir effectuer de simples requêtes http. J'ai ensuite réalisé une 2ème version de DELPHP, plus propre et permettant l'upload http de gros fichiers (reproduction du ftp). Cette version (DLL) utilise le multithreading afin de pouvoir effectuer plusieurs requêtes http simultannément. Ainsi, l'espace membre intégré à DELPHP utilise un thread et l'upload, un thread par fichier... Tu pourras essayer la DLL si tu veux (testée avec Delphi et VB). En fait, j'attend d'avoir des retours, des avis des utilisateurs de DELPHP avant de vraiment m'investir dans ce projet. Pour l'instant, je dois avouer que vous n'êtes pas aussi nombreux que je l'aurais espèré.
@ShaiLeTroll : Salut! Comme je le dis dans l'article, il est possible de faire ce que l'on veux en ce qui concerne la récupération des données. Il est également indiqué comment je procède pour récupérer les données; Dans Delphp2, je sérialise les données, séparées par un caractères nul (#0) puis j'effectue un strexplode avec Delphi pour obtenir au final le tableau. A ce propos, DELPHP2 possède une fonction "strexplode" beaucoups plus rapide que dans la 1ère version.
Concernant la sécurité, il faut voir DELPHP comme un simple navigateur. En utilisant l'espace membre et SSL, je met au défi quiconque d'essayer de pirater la base. Ce qu'il faut surtout garder à l'esprit, c'est d'éviter de donner à l'utilisateur la possibilité d'effectuer n'importe quelle requête SQL, comme c'est souvent le cas avec les autres solutions intraweb. Ici, les requêtes SQL sont dans le script PHP et l'utilisateur envoit seulement les paramètres nécessaires... A noter que l'espace membre de DELPHP2 est plus propre que dans la 1ère version.
Ai-je la bonne version ?
Je ne trouve que les sources de DelphpUnit, et pas celle de DelphpUnit2 ...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Procedure StrExplode(Const s, sep: String; list: TStrings); Var x, l: Integer; st: String; Begin l := Length(s); If (l <= 0) Then Exit; x := 1; st := ''; Repeat If (s[x] = sep) Then Begin list.Add(st); st := ''; End Else st := st + s[x]; inc(x); Until (x > l); If (st <> '') Then list.Add(st); End;
Je n'ai pas distribué le code de la version 2, mias juste une DLL pour le moment... J'attend d'avoir quelques retours avant de m'investir dans ce projet.
La fonction strexplode la plus rapide que j'ai pu trouvé est celle-ci : ExplodeLazy ;)
Faudra lorsque j'aurais le temps, m'y interesser, cela pourrait servir à nos projets ... j'y avais déjà songé via WebService et ClientDataSet, mais le coût d'investissement est assez important, et passer par un Script au lieu d'un WebService finalement cela facilite le côte Delphi (la génération d'interface, le WSDL et THTTPRIO, c'est une chiasse)
:king: :yaisse2: :yaisse: :yaisse3:J'aurais au moins contribué à 10 lignes de code :mrgreen:
Ta participation au forum est remarquable, tu as toujours d'excelentes idées. :ccool:
En fait, j'espère que les développeurs essayeront cette DLL et pourront vérifier son bon fonctionnement. Après quoi, je pense distribuer les sources de cette 2ème version si tout fonctionne bien...
Merci Sub0, ... sinon, n'utilisant pas souvent ExplodeLazy (j'utilise mon autre fonction explode plus complète, ...), j'ai vu que certaines versions du forum étaient buggées avec les chaines vides ... au ças où, voir ICI pour les bonnes versions ...
Merci pour l'info ! :ccool:
A propos, je compte prochainement mettre le code de la V2 en ligne. Serais-tu intérressé pour tester ses fonctionalités et éventuellement améliorer (si possible) certains points ?
Effectivement, je serais interessé, je n'ai pas bcp eu le temps regarder la première version, mais je me pencherais sur la 2nde, ...
je viens de lire tous les commentaires sur ce projet , je trouve ce travail est remarquable et il se trouve que pour mon boulot je dois faire migrer une application delphi+access en local en delphi+mysql et c'est tout a fait ce que je cherche ,je me mets de suite a tester les versions disponibles
merci