PureBasic

Forums PureBasic
Nous sommes le Dim 21/Juil/2019 14:16

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 24 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: HTTPRequest() & Php &JSON
MessagePosté: Lun 08/Sep/2014 19:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6848
Localisation: IDF (Yvelines)
HTTPRequest()
Sous la forme d'un include, HTTPRequest() est une fonction qui permet d’exécuter un script Php sur un serveur local ou distant et de recevoir ou envoyer des données.

Pour utiliser cet include vous devez avoir des connaissances en Php et avoir un serveur local ou un serveur distant.

Vous allez pouvoir consulter trois tutoriels pour :
- Recevoir un tableau envoyé par un script Php.
- Recevoir un tableau associatif envoyé par un script Php.
- Envoyer des variables à un script Php.
- Recevoir le contenu d'une requête SQL envoyé par un script Php (En préparation actuellement)

Installation
Commencez créer un dossier dans lequel vous allez enregistrer HTTPRequest.pbi
Code:
;HTTPRequest() Version 1.10
;Contributor Falsam & CO
;Create 08 September 2014
;Update 29 September 2017

Procedure.s HTTPRequest(HostName.s, HostFolder.s, HostPort, PhpScript.s, Method.s="GET", DataSend.s="", *CallBackError=0, Mode=#PB_Network_TCP)
  Protected HostConnection.i=0
  Protected HostUrl.s
  Protected dwBytes, *Buffer, Buffer.s
 
  If InitNetwork()
   HostConnection = OpenNetworkConnection(HostName, HostPort, Mode)
   
   If HostConnection
     HostUrl = Method+" "
     HostUrl + HostFolder + PhpScript
     
     If DataSend<>""
       HostUrl+"?"+DataSend
     EndIf 
     
     HostUrl + " HTTP/1.0" + #CRLF$ + "Host: " + HostName + #CRLF$ + #CRLF$ + "Connection: Close"
   
     If SendNetworkString(HostConnection, HostUrl, #PB_UTF8)
       Delay(200)
       *buffer = AllocateMemory(65535)
       dwBytes = 1
       While dwBytes > 0
         dwBytes = ReceiveNetworkData(HostConnection, *buffer, 65535)
       Wend
     Else
       If *CallBackError <> 0
         CallFunctionFast(*CallBackError, 3) ;Error SendNetworkString()
       Else
         ProcedureReturn "Error"
       EndIf
     EndIf
   
     CloseNetworkConnection(HostConnection)
     
     Buffer = PeekS(*Buffer, -1, #PB_UTF8 | #PB_ByteLength)
     Debug Buffer
     FreeMemory(*Buffer)

     ProcedureReturn StringField(Buffer, CountString(Buffer, #CRLF$) + 1, #CRLF$)     
     
   Else
     If *CallBackError <> 0
       CallFunctionFast(*CallBackError, 2) ;Server connection error
     Else
       ProcedureReturn "Error"
     EndIf
   EndIf 
Else
   If *CallBackError <> 0
     CallFunctionFast(*CallBackError, 1) ;InitNetwork() Error
   Else
     ProcedureReturn "Error"
   EndIf
EndIf
EndProcedure


Tutoriel : Recevoir un tableau envoyé par un script Php.
On va commencer par faire simple. Sur mon serveur distant se trouve un script Php (test0.php) qui va renvoyer un tableau.
Code:
<?php
   $array = array("foo", "bar", "hello", "world");
   echo json_encode($array);
?>
On déclare un tableau de variables qui sera retourné par le script php dans sa représentation JSON.

Le code Pure Basic pour recevoir les données (test0.pb)
Code:
;Receive Php Arrays
IncludeFile "HTTPRequest.pbi"

Enumeration
  #Json
EndEnumeration

Global Buffer.s, i
Global Dim Result.s(0)

Buffer = HTTPRequest("s242132022.onlinehome.fr", "/racal/", 80, "test0.php")

Debug "Control Php Array : " + Buffer

If ParseJSON(#Json, Buffer)
  ;Transfer the php array to an array
  ExtractJSONArray(JSONValue(#Json), Result())
   
  ;Display the result
  For i=0 To ArraySize(Result())
    Debug Result(i)
  Next
EndIf
Buffer contiendra la représentation JSON du tableau renvoyer par le script php.

Examinons les différents paramètres de la fonction HTTPRequest()
-Paramètre 1 : Nom du serveur distant.
-Paramètre 2 : Nom du dossier distant qui contient le script php
-Paramètre 3 : Port du serveur distant. En général il prend la valeur 80
-Paramètre 4 : Le script à lancer.

* N'oubliez pas de décocher l'option unicode des paramètres de compilation.

Résultat
Citation:
Control Php Array : ["foo","bar","hello","world"]
foo
bar
hello
world


A lire aussi
Tutoriel : Recevoir un tableau associatif envoyé par un script Php
Tutoriel : Envoyer des données à un script Php

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Mar 09/Sep/2014 16:32, édité 5 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: HTTPRequest() & Php &JSON
MessagePosté: Lun 08/Sep/2014 19:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6848
Localisation: IDF (Yvelines)
Tutoriel : Recevoir un tableau associatif envoyé par un script Php.

Avec ce deuxième tutoriel, nous allons recevoir le tableau associatif retourné par le script Php dans une Map.

Script Php sur le serveur distant (test1.php) qui va renvoyer un tableau associatif.
Code:
<?php
   $array = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
   echo json_encode($array);
?>

Le code Pure Basic pour recevoir les données (test1.pb)
Code:
;Receive Php Associative Arrays
IncludeFile "HTTPRequest.pbi"

Enumeration
  #Json
EndEnumeration

Global Buffer.s
Global NewMap Result.s()

Buffer = HTTPRequest("s242132022.onlinehome.fr", "/racal/", 80, "test1.php", "GET", "")

Debug "Control Php Associative Arrays : " + Buffer

If ParseJSON(#Json, Buffer)
    ; transfer the php array to a map
    ExtractJSONMap(JSONValue(#Json), Result())
 
    ; display the result
    ForEach Result()
      Debug MapKey(Result()) + " = " + Result()
    Next
EndIf


Résultat
Citation:
Control Php Associative Arrays : {"Peter":"35","Ben":"37","Joe":"43"}
Ben = 37
Joe = 43
Peter = 35

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Mar 09/Sep/2014 16:28, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 9:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6637
Localisation: Isere
Merci FALSAM pour ce nouveau TUTO 8)
Ca doit etre cool cette librairie puisque tout le monde en parle ..

Le premier code marche niquel en LOCALHOST
Mais le le testPhp1 me retourne que ça :cry:
Code:
Control Php Associative Arrays :

J'ai encore du merder quelque part, ou peut etre une extension PHP à activer sur mon serveur local :oops:

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 10:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8705
J'ai pas du tout le temps de m'y intéresser pour le moment mais merci bien pour ce tuto, ces possibilités sont excellentes.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Dernière édition par Ar-S le Mar 09/Sep/2014 21:17, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 11:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6848
Localisation: IDF (Yvelines)
Kwai chang caine a écrit:
J'ai encore du merder quelque part, ou peut etre une extension PHP à activer sur mon serveur local :oops:
Si ton premier code fonctionne, ça signifie que Php est bien activé.

Je viens de tester à nouveau avec les codes que je fourni ci-dessus et j'ai bien le résultat que j'annonce.

:?: Si tu testes les codes pure basic sans rien changer, est ce que ça fonctionne ? (Normalement oui à moins que mon serveur distant soit out)

:?: Si oui, pourquoi ça ne fonctionne pas chez toi ?
-La fatalité ? héhé :mrgreen:
-Le serveur out (لعون مالخادم)?
-Une erreur dans les paramètres ?

:arrow: Download ce petit fichier httprequest.zip et décompresse le sur ton serveur local. (N'existe plus)

Tu dois avoir dans la racine www de ton serveur un dossier qui se nomme httprequestdemo
Ce dossier httprequestdemo contient
-Le dossier <PureBasicCode>
-le fichier test0.php
-le fichier test1.php

Il ne te reste qu'à tester les deux codes Pure Basic se trouvant dans le dossier PureBasicCode (Pas très original ce nom).

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 13:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6637
Localisation: Isere
T'as raison ça marche 8O
Je comprend pas ou j'avais merdé :oops:

Merci beaucoup de ton envoi, je remplace mes fichier tout "pourite" par les tiens 8)

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 13:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6848
Localisation: IDF (Yvelines)
Tutoriel : Envoyer des données à un script Php.
Cette fois çi on ne met pas en oeuvre JSON. Ce nouveau code va vous permettre d'envoyer des données à un script Php qui se chargera de mettre à jour une base de données MySql hébergé sur un serveur Distant. Bien entendu, ça fonctionne aussi sur un serveur local.

Cotes serveur j'ai une base de données MySQL avec une table dans laquelle est enregistré une conversation entres utilisateurs.

Le code qui permet d'envoyer des données.
Modifiez la variable User et Say avec votre pseudo et ce que vous voulez dire.
Code:
;Send data
IncludeFile "HTTPRequest.pbi"

Global User.s, Say.s, DataSend.s

;My data
User = "falsam"
Say  = "Je teste la fonction HTTPRequest"

;Format data
;A URL$ may Not contain certain characters such as: tab, space, accent letter etc.,
DataSend + "&user=" + URLEncoder(User) + "&say=" + URLEncoder(Say)

;Send data
If HTTPRequest("s242132022.onlinehome.fr", "/racal/", 80, "usersay0.php", "POST", DataSend) = ""
  MessageRequester("Information","Information ajouté")
EndIf


Depuis ce lien vous allez pouvoir vérifier que votre commentaire est bien enregistré dans la base de données.
:arrow: Historique des commentaires.

Le script php sur le serveur capture les variables user et say et les envoie à la base de données.

Extrait de code Php
Code:
...
// escape variables for security
$user = mysqli_real_escape_string($con, $_GET['user']);
$say = mysqli_real_escape_string($con, $_GET['say']);
   
$sql="INSERT INTO usersay (user, say) VALUES ('$user', '$say')";
...
je n'ai pas encore testé tout les cas de figures n'hésitez pas à le faire et n'oubliez pas votre feedback.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 16:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 08/Déc/2013 23:19
Messages: 602
Localisation: Hérault
Salut falsam,
Pourquoi à la place de HTTPRequest() ne pas utiliser ReceiveHTTPFile() de la bibliothèque HTTP ?

_________________
Mon site dédié à ma passion pour la programmation :
http://majikeyric.free.fr


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 16:55 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6848
Localisation: IDF (Yvelines)
majikeyric a écrit:
Pourquoi à la place de HTTPRequest() ne pas utiliser ReceiveHTTPFile() de la bibliothèque HTTP ?
HTTPRequest n'est pas une fonction native de Pure Basic.

Par contre c'est une fonction native de SpiderBasic et je me suis lancé quand quelques chose de (presque) similaire avec Pure Basic.

Peut être que je pourrais utiliser ReceiveHTTPFile() dans la procédure HTTPRequest() pour récupérer des données ou les envoyer effectivement.

J'ai un peu peur de cette fonction là mais ma peur n'est pas rationnel. :)

j'utilise SendNetworkString() et ReceiveNetworkData() pour envoyer et recevoir des données du serveur mais je ferais des tests avec ReceiveHTTPFile().

Merci majikeyric pour cette suggestion.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 18:42 
Hors ligne

Inscription: Jeu 07/Mar/2013 19:02
Messages: 188
Localisation: France Alsace / Espagne Girona
falsam a écrit:
HTTPRequest n'est pas une fonction native de Pure Basic.
Par contre c'est une fonction native de SpiderBasic et je me suis lancé quand quelques chose de (presque) similaire avec Pure Basic.


Salut Falsam, pourquoi poster dans Pb si c'est pas des fonctions Pb, je commence a plus comprendre ce forum

_________________
Code toujours multi-OS
OSX 10.6.8 - Xcode Version 3.2.2 - GCC 4.2.1 / PureBasic 5.30 (MacOS X - x64) Full version / Parallels Windows XP PureBasic 5.30 (Windows - x86) Full version / Debian PureBasic 5.30


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 20:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6848
Localisation: IDF (Yvelines)
doudouvs a écrit:
Salut Falsam, pourquoi poster dans Pb si c'est pas des fonctions Pb, je commence a plus comprendre ce forum
Bonjour doudouvs. Celle là c'est la meilleur de la journée je crois :)

Tu as raison je crois que je vais aller en parler ailleurs finalement. Parlons sur ce forum que des fonctions natives de Pure Basic :mrgreen:

Une petite mise au point quand même. Doudouvs je pense que comme beaucoup sur ce forum tu as du lire ce topic en diagonale. Je pense que tu n'as pas vu que HTTPRequest est une fonctionnalité codé 100% Pure Basic et que cette fonctionnalité permettait de communiquer avec des scripts Php.

PS : N'étant pas des fonctions pure basic (D'aprés Doudouvs), modérateur si tu passes par là pourrais tu supprimer l'intégralité de ce topic :)

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mar 09/Sep/2014 21:55 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3702
Même si elle n'avait pas été 100% en PureBasic, elle aurait quand même eu sa place sinon ça risque de faire beaucoup de suppression dans cette rubrique.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mer 10/Sep/2014 0:03 
Hors ligne

Inscription: Jeu 07/Mar/2013 19:02
Messages: 188
Localisation: France Alsace / Espagne Girona
Ben en gros je te cite " HTTPRequest n'est pas une fonction native de Pure Basic Par contre c'est une fonction native de SpiderBasic" c'est comme comme si tu me dit que dit q'une fonction marche pas sous windows mais elle marche, puis aussi sur linux.

Je ne dit pas que tu dois en parler ailleurs je ne comprend pas pourquoi tu fait un post dans PB en parlant d'un autre logiciel

Pour moi PB n'ai pas SP. heu nico si je me trompe pas soit c'est du 100% ou rien

si HTTPRequest marche sous PB elle marche point non ?

si HTTPRequest fait partie intégrante de PB le sujet et clos pour moi.

ou je suis largué

_________________
Code toujours multi-OS
OSX 10.6.8 - Xcode Version 3.2.2 - GCC 4.2.1 / PureBasic 5.30 (MacOS X - x64) Full version / Parallels Windows XP PureBasic 5.30 (Windows - x86) Full version / Debian PureBasic 5.30


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mer 10/Sep/2014 9:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6848
Localisation: IDF (Yvelines)
doudouvs a écrit:
Ben en gros je te cite " HTTPRequest n'est pas une fonction native de Pure Basic Par contre c'est une fonction native de SpiderBasic" c'est comme comme si tu me dit que dit q'une fonction marche pas sous windows mais elle marche, puis aussi sur linux. .... ou je suis largué
Tu vois tu te réponds à toi même. Tu es largué et tu n'as pas lu la phrase jusqu'au bout apparement :)

J'ai dit effectivement
falsam a écrit:
HTTPRequest n'est pas une fonction native de Pure Basic. Par contre c'est une fonction native de SpiderBasic
mais lit la suite
falsam a écrit:
... et je me suis lancé quand quelques chose de (presque) similaire avec Pure Basic.
Et là j'insiste encore une fois: HTTPRequest() est une fonction sous forme d'include 100% en PureBasic et de plus sans API.

doudouvs a écrit:
Je ne dit pas que tu dois en parler ailleurs je ne comprend pas pourquoi tu fait un post dans PB en parlant d'un autre logiciel
Je ne parle pas d'un autre logiciel. J'ai juste dit que cette fonction existait avec le logiciel SpiderBasic et que je tentait de faire la même chose en Pure Basic.
doudouvs a écrit:
Pour moi PB n'ai pas SP.
Ben justement si. Avec SpiderBasic tu codes en PureBasic et SpiderBasic va génerer le code HTML et JavaScript en s'appuyant sur le framework JavaScript Open source Dojo. Ton code Pure Basic fonctionnera via un navigateur internet. (Mince j'ai dérivé sur SpiderBasic et c'est pas du PureBasic)
doudouvs a écrit:
nico si je me trompe pas soit c'est du 100% ou rien
Et ben ..... il y a du nettoyage à faire sur ce forum :mrgreen:
doudouvs a écrit:
si HTTPRequest marche sous PB elle marche point non ?
Hein ? (pas compris)
doudouvs a écrit:
si HTTPRequest fait partie intégrante de PB le sujet et clos pour moi.
Et je n'aurais pas fait ce topic:)

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: HTTPRequest() & Php &JSON
MessagePosté: Mer 10/Sep/2014 9:17 
Hors ligne

Inscription: Jeu 07/Mar/2013 19:02
Messages: 188
Localisation: France Alsace / Espagne Girona
Merci pour les éclaircissements, là je comprend. J'ai aussi compris que je suis larguer en ce moment (trop de boulot tue le boulot)

_________________
Code toujours multi-OS
OSX 10.6.8 - Xcode Version 3.2.2 - GCC 4.2.1 / PureBasic 5.30 (MacOS X - x64) Full version / Parallels Windows XP PureBasic 5.30 (Windows - x86) Full version / Debian PureBasic 5.30


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 24 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye