Besoin d'alpha testeurs : Communication avec des scripts Php

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Besoin d'alpha testeurs : Communication avec des scripts Php

Message par falsam »

Ce sujet fait suite à mon précédent sujet Sécuriser un script Php

J'aurais besoin de quelques testeurs pour tester la fiabilité de ce code.

Dans un premier temps, l'objectif de ce code est de pouvoir créer un compte utilisateur sur un serveur mutualisé.

Pour créer un compte
- Entrer un nom d'utilisateur et un mot de passe puis cliquer sur le bouton Sign Up

Pour se connecter par la suite.
- Entrer un nom d'utilisateur et un mot de passe puis cliquer sur le bouton Sign In ou presser la touche Entrée.

Pour quitter l'application.
- Cliquer sur le bouton Quit ou presser la touche Escape.

Une fois connecter

Pour se déconnecter
- Cliquer sur le bouton Sign Out.

Pour supprimer son compte
- Clique sur le bouton Delete account.
- Un message vous demandera de confirmer cette suppression.

:idea: Le nom d'utilisateur n'est pas case sensitive ce qui n'est pas le cas du mot de passe l'

Merci de mettre le pseudo du forum mais pas le même mot de passe :wink:

Les information sont cryptés MD5.

Code : Tout sélectionner

EnableExplicit

Enumeration Font
  #FontGlobal  
  #FontH1  
  #FontH2  
EndEnumeration

Enumeration Process
  ;Process Account 0 -> 4
  #PR_Sign_Up
  #PR_Sign_In
  #PR_Sign_Update
  #PR_Account_Kill
  #PR_UsersList  
  
  ;Process Game 5 -> 7
  #PR_Game_Exist
  #PR_Game_New  
  #PR_Game_Kill
EndEnumeration

Enumeration  Window
  #mf ;Mainform
  #pr ;Profil 
EndEnumeration

Enumeration Gadget   
  #mfLabel ;0 -> 99
  
  #mfLogin  = 100
  #mfContent
  
  #mfUserIp
  #mfUserName
  #mfUserPassword
  
  #mfUserNameView
  #mfUsersList
  #mfUserProfil
  
  #mfSignUp
  #mfSignIn
  #mfSignOut   
  #mfAccountKill
  
  #mfLang
  
  #mfGameNew
  #mfGameDelete
  
  #mfQuit
  
  ;Thumbnails
  #prThumNails
  #prTime
  #prExit
EndEnumeration

Structure NewMessage
  fr.s
  en.s
EndStructure
Global NewMap Messages.NewMessage()

Global UserAgent.s = "The quick brown fox jumps over the lazy dog."
Global url.s = "http://s242132022.onlinehome.fr/game01/"
Global Core.s = "core/"

Global Lang.s = "Fr"

Global Width, Height
Global MarginTop.i

;ThumbNails
Global NewList Avatars.s() 

;Users
Structure NewUser
  Name.s
  Container.i
  WebGadget.i
  ThumbNail.s
EndStructure  
Global NewList Users.NewUser(), Selector

;-Summary
Declare   Start()

;U.T. Server
Declare   ServeurEnable(Script.s = "")

;U.T. User Account
Declare.s GetUserIp()
Declare   SignUp()
Declare   SignIn()
Declare   SignOut()
Declare   AccountKill()
Declare   Userslist()

;U.T. User Profile
Declare   ViewThumNails()
Declare   ThumbNailsList()
Declare.s ShowThumbNail(Profil.s = "")
Declare   SelectThumNail()

;U.T. Game 
Declare   GameNew()

;U.T. Lang & Messages
Declare   GetLang()
Declare   MessageInit()
Declare.s m(Key.s)

;U.T. Tools
Declare.s md5(buffer.s)
Declare.f AdjustFontSize(Size.l)

Declare   Exit()

Start()

Procedure Start() 
  UseMD5Fingerprint()
  InitNetwork()
  
  ExamineDesktops()
  
  CompilerSelect #PB_Compiler_OS 
    CompilerCase #PB_OS_Windows   
      Width  = GetSystemMetrics_(#SM_CXSCREEN)
      Height = GetSystemMetrics_(#SM_CYSCREEN)
      
      LoadFont(#FontGlobal, "", AdjustFontSize(11))
      LoadFont(#FontH1, "", AdjustFontSize(15))
      LoadFont(#FontH2, "", AdjustFontSize(12))
      
    CompilerCase #PB_OS_MacOS   
      Width  = DesktopWidth(0)
      Height = DesktopHeight(0)
      MarginTop + 40
      
      LoadFont(#FontGlobal, "Helvetica", 12)
      LoadFont(#FontH1, "Helvetica", 15)      
      LoadFont(#FontH2, "Helvetica", 13)
      
    CompilerDefault
      Width  = DesktopWidth(0)
      Height = DesktopHeight(0)
      
      LoadFont(#FontGlobal, "", 11)
      LoadFont(#FontH1, "", 15)
      LoadFont(#FontH2, "", 12)
  CompilerEndSelect   
  
  ReceiveHTTPMemory(url + "upload.php", #PB_HTTP_NoRedirect, UserAgent)
  
  MessageInit()
  
  SetGadgetFont(#PB_Default, FontID(#FontGlobal))  
  OpenWindow(#mf, 0, 0, Width, Height, "Test", #PB_Window_BorderLess)
  
  ;-FORM : The user is NOT connected
  ContainerGadget(#mfLogin, 0, 0, Width, Height)
    TextGadget(#mfUserIp, 10, MarginTop + 20, 300, 24, "Waiting to be connected")
  
    TextGadget(#mfLabel + 1, 10, Height - 90, 200, 24, "")
    StringGadget(#mfUserName, 10, Height - 60, 200, 24, "")
    SetGadgetAttribute(#mfUserName, #PB_String_MaximumLength, 20) 
    
    TextGadget(#mfLabel + 2, 220, Height - 90, 200, 24, "")
    StringGadget(#mfUserPassword, 220, Height - 60, 200, 24, "", #PB_String_Password)
    SetGadgetAttribute(#mfUserPassword, #PB_String_MaximumLength, 20)
    
    ButtonGadget(#mfQuit, Width - 140, MarginTop + 20, 120, 25, "")
    ButtonGadget(#mfSignIn, 430, Height - 60, 80, 25, "")
    ButtonGadget(#mfSignUp, 520, Height - 60, 80, 25, "")
    
    ComboBoxGadget(#mfLang, 610, Height - 60, 80, 25)
    AddGadgetItem(#mfLang, -1, "Fr")
    AddGadgetItem(#mfLang, -1, "En")
    SetGadgetState(#mfLang, 0)    
  CloseGadgetList()

  ;-FORM : The user is connected
  ContainerGadget(#mfContent, 0, 0, Width, Height)
    ButtonGadget(#mfSignOut, Width - 160, MarginTop + 20, 150, 25, m("so"))    
    ButtonGadget(#mfAccountKill, Width - 160, MarginTop + 50, 150, 25, m("da"))
    ButtonGadget(#mfGameNew, Width - 160,  MarginTop + 80, 150, 25, m("gn"))    
    
    ScrollAreaGadget(#mfUsersList, 0, 0 + MarginTop, 300, Height-MarginTop, 278, 112, #PB_ScrollArea_Single)
    CloseGadgetList()
    
    TextGadget(#mfUserNameView, 310, MarginTop + 10, 200, 22, "")     
    SetGadgetFont(#mfUserNameView, FontID(#FontH1)) 

  CloseGadgetList()
  HideGadget(#mfContent, #True)
  
  GetLang()
  
  AddKeyboardShortcut(#mf, #PB_Shortcut_Return, #mfSignIn)   
  AddKeyboardShortcut(#mf, #PB_Shortcut_Escape, #mfQuit) 
  
  ;Triggers
  BindGadgetEvent(#mfSignIn, @SignIn())
  BindGadgetEvent(#mfSignUp, @SignUp())
  BindGadgetEvent(#mfSignOut, @SignOut())
  BindGadgetEvent(#mfLang, @Getlang())
  
  BindGadgetEvent(#mfAccountKill, @AccountKill())
  BindGadgetEvent(#mfQuit, @Exit())
  
  BindGadgetEvent(#mfGameNew, @GameNew())
    
  BindEvent(#PB_Event_Menu, @SignIn(), #mf, #mfSignIn)  
  BindEvent(#PB_Event_Menu, @Exit(), #mf, #mfQuit)
   
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  SetActiveGadget(#mfUserName)  
  
  If ServeurEnable() = #False
    MessageRequester(m("info"), m("nc"), #PB_MessageRequester_Error)
    Exit()
  Else
    SetGadgetText(#mfUserIp, GetUserIp())
  EndIf
    
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

;-
;- U.T. Server
Procedure ServeurEnable(Script.s = "")
  Protected Header.s, Buffer.s, Result.b
  
  If Script = ""
    Script = Core + "isenable.php"
  EndIf
    
  Header = GetHTTPHeader(Url + Script)
  Buffer = StringField(Header, 1, #LF$)
  
  If FindString(buffer, "200 OK")
    Result = #True
  EndIf 
  ProcedureReturn Result  
EndProcedure

;-
;- U.T. User Account
Procedure.s GetUserIp()
  Protected Buffer.s, *Buffer, Size, n
  Protected Script.s = core + "pr_getip.php" 
  
  If ServeurEnable(Script)
    *buffer = ReceiveHTTPMemory(url + script, #PB_HTTP_NoRedirect, UserAgent)
    
    If *buffer
      Size = MemorySize(*buffer)
      Buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
      FreeMemory(*buffer)      
    EndIf
  EndIf 
  ProcedureReturn Buffer
EndProcedure

;Create user account
Procedure SignUp()
  Protected UserName.s = GetGadgetText(#mfUserName)
  Protected UserPass.s = md5(GetGadgetText(#mfUserPassword))
  Protected Buffer.s, Parameters.s, *Buffer, Size
  Protected script.s = core + "pr_account_a.php"  
    
  If ServeurEnable(Script)
    Parameters = "?process=" + #PR_Sign_Up + "&username=" + UserName + "&userpassword=" + UserPass + "&thumbnail=profil.jpg"
    *buffer = ReceiveHTTPMemory(url + script + "/" + URLEncoder(parameters), #PB_HTTP_NoRedirect, UserAgent)
    
    If *buffer
      Size = MemorySize(*buffer)
      Buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
      FreeMemory(*buffer)
      Buffer = LSet(Buffer, Len(Buffer) - 1)
    EndIf
    
    Select Buffer
      Case "01"
        SignIn()
        GameNew()
        
      Case "00" 
        MessageRequester(m("info"), m(buffer)  + " " + UserName , #PB_MessageRequester_Warning)
        
      Case "10"
        MessageRequester(m("info"), m(buffer), #PB_MessageRequester_Warning)
    EndSelect       
  EndIf  
EndProcedure

;User Connect
Procedure SignIn()
  Protected UserName.s = GetGadgetText(#mfUserName)
  Protected UserPass.s = md5(GetGadgetText(#mfUserPassword))
  Protected Buffer.s, Parameters.s, *Buffer, Size
  Protected script.s = core + "pr_account_a.php"  
  
  If ServeurEnable(Script)
    Parameters = "?process=" + #PR_Sign_In + "&username=" + UserName + "&userpassword=" + UserPass
    *buffer = ReceiveHTTPMemory(url + script + "/" + URLEncoder(parameters), #PB_HTTP_NoRedirect, UserAgent)
    
    If *buffer
      Size = MemorySize(*buffer)
      Buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
      FreeMemory(*buffer)
      Buffer = LSet(Buffer, Len(Buffer) - 1)
    EndIf
    
    Select Buffer
      Case "10"
        MessageRequester(m("info"), m(buffer), #PB_MessageRequester_Warning)
        
      Case "11"
        HideGadget(#mfLogin, #True)  
        HideGadget(#mfContent, #False)
        SetGadgetText(#mfUserNameView, m("uw") + UserName) 
        UsersList()     
        SetGadgetState(#mfUsersList, 0)  
    EndSelect    
  EndIf    
EndProcedure

;User Disconnect
Procedure SignOut()
  HideGadget(#mfContent, #True)
  
  UnbindGadgetEvent(#mfUserProfil, @ViewThumNails(), #PB_EventType_LeftClick)
  
  ;Empty Empty user list
  ForEach Users()
    FreeGadget(users()\WebGadget)
    FreeGadget(users()\Container)    
  Next
  ClearList(Users())
  
  HideGadget(#mfLogin, #False)
  SetActiveGadget(#mfUserName)  
EndProcedure

;Deleting a user account
Procedure AccountKill()
  Protected UserName.s = GetGadgetText(#mfUserName)
  Protected UserPass.s = md5(GetGadgetText(#mfUserPassword))
  Protected Buffer.s, Parameters.s, *Buffer, Size
  Protected script.s = core + "pr_account_a.php"
    
  If MessageRequester(m("info"), m("3C"), #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
    If ServeurEnable(Script)  
      Parameters = "?process=" + #PR_Account_Kill + "&username=" + UserName + "&userpassword=" + UserPass
      *buffer = ReceiveHTTPMemory(url + script + "/" + URLEncoder(parameters), #PB_HTTP_NoRedirect, UserAgent)
      
      If *buffer
        Size = MemorySize(*buffer)
        Buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
        FreeMemory(*buffer)
        Buffer = LSet(Buffer, Len(Buffer) - 1)
      EndIf
      
      Select Buffer 
        Case "31" ;Account destroy -> User Sign Out
          SignOut()
          
        Case "30" ;Error While deleting account
          MessageRequester(m("info"), m(Buffer), #PB_MessageRequester_Warning)
      EndSelect        
    EndIf    
  EndIf 
EndProcedure

Procedure UsersList()
  Protected Buffer.s, *Buffer, Size, n
  Protected Script.s = core + "pr_userslist.php"
  
  Protected Index, y
  
  ;For each user, receiving a JSON structure 
  ;Example : {"username":"falsam","password":"57fdc2eb1a52921add306b73b3bd68ec","thumbnail":"p023.jpg"}
  If ServeurEnable(Script)
    *buffer = ReceiveHTTPMemory(url + script, #PB_HTTP_NoRedirect, UserAgent)
    
    If *buffer 
      Size = MemorySize(*buffer)
      Buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
      FreeMemory(*buffer)
      
      For n = 1 To CountString(Buffer, #CR$)
        AddElement(Users())
        If ParseJSON(0, StringField(Buffer, n, #CR$))
          If ExamineJSONMembers(JSONValue(0))
            While NextJSONMember(JSONValue(0))
              Select JSONMemberKey(JSONValue(0))
                Case "username"
                  Users()\Name = GetJSONString(JSONMemberValue(JSONValue(0)))
                  
                Case "thumbnail"
                  users()\ThumbNail = GetJSONString(JSONMemberValue(JSONValue(0)))
                  
              EndSelect
            Wend
          EndIf
        EndIf
      Next
      
      ;Sort user list 
      SortStructuredList(Users(), #PB_Sort_Ascending | #PB_Sort_NoCase, OffsetOf(NewUser\Name), #PB_String)
      
      ;Create user list gadgets
      OpenGadgetList(#mfUsersList)
      ForEach Users()
        Index = ListIndex(Users())
                        
        Users()\Container = CanvasGadget(#PB_Any, 0, y, 350, 110, #PB_Canvas_Container)  
        
        ;Show Name
        StartDrawing(CanvasOutput(Users()\Container))
          If LCase(Users()\Name) = LCase(GetGadgetText(#mfUserName))
            Box(0, 0, 350, 110, RGB(188, 143, 143))  
          EndIf 
          DrawingFont(FontID(#FontH2))
          DrawingMode(#PB_2DDrawing_Transparent)
          DrawText(5, 5, "#" + Index, RGB(255, 0, 0))
          DrawText(TextWidth("#" + Index) + 10, 5, Users()\Name, RGB(105, 105, 105))            
        StopDrawing()
        
        ;Show profil image (Image not selectable) 
        Users()\WebGadget =  WebGadget(-1, 5, 25, 80, 80, "")          
        SetGadgetItemText(Users()\WebGadget, #PB_Web_HtmlCode , ShowThumbNail(Users()\ThumbNail))
        SetGadgetAttribute(Users()\WebGadget, #PB_Web_BlockPopupMenu, #True)
        SetGadgetData(Users()\Container, Index)
        
        ;Button change image profil
        If LCase(Users()\Name) = LCase(GetGadgetText(#mfUserName))
          ButtonGadget(#mfUserProfil, 240, 5, 30, 30, "?")
          SetGadgetFont(#mfUserProfil, FontID(#FontH2))
          SetGadgetData(#mfUserProfil, Index)
          GadgetToolTip(#mfUserProfil, m("upr"))
          BindGadgetEvent(#mfUserProfil, @ViewThumNails(), #PB_EventType_LeftClick)
        EndIf                
                              
        CloseGadgetList()
                
        y + 115
        SetGadgetAttribute(#mfUsersList, #PB_ScrollArea_InnerHeight, y)
      Next      
      CloseGadgetList()
    EndIf
  EndIf 
EndProcedure

;-
;- U.T. User Profile

Procedure ViewThumNails()
  Protected w = Width/3 
  Protected h = Height/2
  Protected Time
  
  ;Modal window
  DisableWindow(#mf, #True)
  
  Selector = GetGadgetData(EventGadget())
  
  OpenWindow(#pr, 0, 0, w, h, m("uspu"), #PB_Window_ScreenCentered, WindowID(#mf)) 
  
  ScrollAreaGadget(#prThumNails, 0, 0, w, h - 60, w, 0)   
  CloseGadgetList()
  SetGadgetColor(#prThumNails, #PB_Gadget_BackColor, RGB(105, 105, 105) )
  
  ;Load thumbnails
  Time = ElapsedMilliseconds()
  ThumbNailsList()
  
  TextGadget(#prTime, 10, h - 50, w - 100, 24, m("dt") + Str(ElapsedMilliseconds() - Time) + " ms")
  ButtonGadget(#prExit, w - 100, h - 50, 80, 30, m("ue"))  
  
  BindGadgetEvent(#prExit, @Exit())  
EndProcedure

Procedure SelectThumNail()
  Protected UserName.s = GetGadgetText(#mfUserName)
  Protected UserPass.s = md5(GetGadgetText(#mfUserPassword))
  Protected Buffer.s, Parameters.s, *Buffer, Size
  Protected script.s = core + "pr_account_a.php"  

  Protected Index = GetGadgetData(EventGadget())
  Protected ThumbNail.s 
  
  SelectElement(Avatars(), Index)
  ThumbNail = GetFilePart(Avatars())
    
  SelectElement(Users(), Selector)
  SetGadgetItemText(Users()\WebGadget, #PB_Web_HtmlCode , ShowThumbNail(ThumbNail)) 
  
  If ServeurEnable(Script)
    Parameters = "?process=" + #PR_Sign_Update + "&username=" + UserName + "&userpassword=" + UserPass + "&thumbnail=" + ThumbNail
    *buffer = ReceiveHTTPMemory(url + script + "/" + URLEncoder(parameters), #PB_HTTP_NoRedirect, UserAgent)
    
    If *buffer
      Size = MemorySize(*buffer)
      Buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
      FreeMemory(*buffer)
      Buffer = LSet(Buffer, Len(Buffer) - 1)
    EndIf
    
    Select Buffer
      Case "01"
        ;SignIn()
        
      Case "00" 
        MessageRequester(m("info"), m(buffer)  + " " + UserName , #PB_MessageRequester_Warning)
        
      Case "10"
        MessageRequester(m("info"), m(buffer), #PB_MessageRequester_Warning)
    EndSelect       
  EndIf  
EndProcedure

Procedure.s ShowThumbNail(Profil.s = "")
  Protected Buffer.s
  If Profil = ""
    Profil = "profil.jpg"
  EndIf
  
  Buffer = "<body scroll = 'no' style='margin:0px; padding:0px;'><img src='" + url + "/data/avatars/" + Profil + "' style='width:100%; height:100%;'></body>"
  ProcedureReturn Buffer
EndProcedure

Procedure ThumbNailsList()
  Protected Buffer.s, *Buffer, Size, n
  Protected Script.s = core + "pr_avatarslist.php"
  Protected Index, Gadget, WebGadget, x, y
  Protected AreaWidth = 102, AreaHeight = 130
  
  If ServeurEnable(Script)
    *buffer = ReceiveHTTPMemory(url + script, #PB_HTTP_NoRedirect, UserAgent)
    
    If *buffer
      Size = MemorySize(*buffer)
      Buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
      FreeMemory(*buffer)
      
      ClearList(Avatars())
      
      For n = 1 To CountString(Buffer, #CR$)
        AddElement(avatars())
        avatars() = StringField(Buffer, n, #CR$)
      Next
      
      OpenGadgetList(#prThumNails)
      
      ForEach avatars()
        Index = ListIndex(Avatars())
        
        Gadget = CanvasGadget(-1, x, y, 100, 120, #PB_Canvas_Container) 
        SetGadgetData(Gadget, Index)
        BindGadgetEvent(Gadget, @SelectThumNail(), #PB_EventType_LeftClick)
        
        StartDrawing(CanvasOutput(Gadget))
          Box(0, 0, 100, 120, RGB(119, 136, 153))
          DrawingMode(#PB_2DDrawing_Transparent)
          DrawingFont(FontID(#FontGlobal))
          DrawText((100 - TextWidth("Select"))/2, 100, "Select", RGB(0, 0, 0))
          StopDrawing()
          WebGadget = WebGadget(-1, 0, 0, 100, 100, "")
        CloseGadgetList()
        
        SetGadgetItemText(WebGadget, #PB_Web_HtmlCode , ShowThumbNail(GetFilePart(Avatars())))
        SetGadgetAttribute(WebGadget, #PB_Web_BlockPopupMenu, #True)
                
        x + AreaWidth
        If x > WindowWidth(#pr) - AreaWidth
          x = 0
          y + AreaHeight
          SetGadgetAttribute(#prThumNails, #PB_ScrollArea_InnerHeight, y + AreaHeight)
        EndIf      
      Next      
      CloseGadgetList()
    EndIf
  EndIf   
EndProcedure

;-
;- Game
Procedure GameNew()
  Protected UserName.s = GetGadgetText(#mfUserName)
  Protected Buffer.s, Parameters.s, *Buffer, Size, n
  Protected Script.s = core + "pr_game.php"
  
  If ServeurEnable(Script)
     Parameters = "?process=" + #PR_Game_New + "&username=" + UserName 
    *buffer = ReceiveHTTPMemory(url + script + "/" + URLEncoder(parameters), #PB_HTTP_NoRedirect, UserAgent)
    
    If *buffer
      Size = MemorySize(*buffer)
      Buffer = PeekS(*buffer, Size, #PB_UTF8|#PB_ByteLength)
      FreeMemory(*buffer)
      Buffer = LSet(Buffer, Len(Buffer) - 1)
      
      Select Buffer  
        Case "61" ;Game environment is ready
          MessageRequester(m("info"), m(Buffer))
            
        Case "60" ;Game environment already exists  
          MessageRequester(m("info"), m(Buffer), #PB_MessageRequester_Error)       
          
      EndSelect      
    EndIf
  EndIf 
EndProcedure

;-
;- U.T. Messages 
;  Translation of the different labels and messages of the application

Procedure GetLang()
  Lang =  GetGadgetItemText(#mfLang, GetGadgetState(#mfLang))
  
  SetGadgetText(#mfLabel + 1, m("un"))        ;UserName
  SetGadgetText(#mfLabel + 2, m("up"))        ;UserPass
  
  SetGadgetText(#mfQuit, m("ue"))             ;Exit
  SetGadgetText(#mfSignIn, m("si"))           ;Sign In
  SetGadgetText(#mfSignUp, m("su"))           ;Sign Up
  SetGadgetText(#mfSignOut, m("so"))          ;Sign Out
  SetGadgetText(#mfAccountKill, m("da"))      ;Account delete
  
  SetGadgetText(#mfGameNew, m("gn"))          ;Game New
  SetGadgetText(#mfGameNew, m("gn"))          ;Game New
  
  
  GadgetToolTip(#mfQuit, m("ueh"))            ;Exit
  GadgetToolTip(#mfSignIn, m("sih"))          ;Sign In Help
  GadgetToolTip(#mfSignUp, m("suh"))          ;Sign Up Help
  GadgetToolTip(#mfSignOut, m("soh"))         ;Sign Out Help
  GadgetToolTip(#mfAccountKill, m("dah"))     ;Delete account Help
EndProcedure

Procedure MessageInit()
  
  ;Form Messages
  AddMapElement(Messages(), "un")
  Messages()\fr = "Nom utilisateur"
  Messages()\en = "User Name"
  
  AddMapElement(Messages(), "up")
  Messages()\fr = "Mot de passe"
  Messages()\en = "PassWord"
  
  AddMapElement(Messages(), "si")
  Messages()\fr = "S'identifier"
  Messages()\en = "Sign In"
  
  AddMapElement(Messages(), "sih")
  Messages()\fr = "Connection (Entrée)"
  Messages()\en = "Connect (Enter)"
  
  AddMapElement(Messages(), "su")
  Messages()\fr = "S'inscrire"
  Messages()\en = "Sign Up"  
  
  AddMapElement(Messages(), "suh")
  Messages()\fr = "Créer un compte"
  Messages()\en = "Create account"  
  
  AddMapElement(Messages(), "uw")
  Messages()\fr = "Bienvenu "
  Messages()\en = "Welcome "  
  
  AddMapElement(Messages(), "upr")
  Messages()\fr = "Changer l'image de votre profil utilisateur."
  Messages()\en = "Change your user profile image."  
  
  AddMapElement(Messages(), "uspu")
  Messages()\fr = "Sélectionner une vignette."
  Messages()\en = "Select a thumbnail."  
   
  AddMapElement(Messages(), "gn")
  Messages()\fr = "Créer jeu"
  Messages()\en = "Create game"  
  
  AddMapElement(Messages(), "so")
  Messages()\fr = "Déconnexion"
  Messages()\en = "Sign Out"  
  
  AddMapElement(Messages(), "soh")
  Messages()\fr = "Se deconnecter"
  Messages()\en = "Disconnect"  
  
  AddMapElement(Messages(), "da")
  Messages()\fr = "Supprimer compte"
  Messages()\en = "Delete account"  
  
  AddMapElement(Messages(), "dah")
  Messages()\fr = "Suppression de votre compte"
  Messages()\en = "Deleting your account"  
  
  AddMapElement(Messages(), "ue")
  Messages()\fr = "Quitter"
  Messages()\en = "Quit"  
  
  AddMapElement(Messages(), "ueh")
  Messages()\fr = "Quitter (Escape)"
  Messages()\en = "Exit (Escape)"  
  
  AddMapElement(Messages(), "sel")
  Messages()\fr = "Sélectionner"
  Messages()\en = "Select"  
  
  AddMapElement(Messages(), "can")
  Messages()\fr = "Abandonner"
  Messages()\en = "Cancel"  
  
  AddMapElement(Messages(), "dt")
  Messages()\fr = "Délais de chargement : "
  Messages()\en = "Loading times : "  
    
  ;Events Messages
  AddMapElement(Messages(), "info")
  Messages()\fr = "Information"
  Messages()\en = "Information"
  
  AddMapElement(Messages(), "nc")
  Messages()\fr = "Pas de connexion avec le serveur."
  Messages()\en = "No connection To the server !"
  
  AddMapElement(Messages(), "00")
  Messages()\fr = "Ce compte existe déja : "
  Messages()\en = "This account already exists : "
  
  AddMapElement(Messages(), "10")
  Messages()\fr = "Nom ou mot de passe invalide."
  Messages()\en = "Name or password Invalid."
    
  AddMapElement(Messages(), "3C")
  Messages()\fr = "Suppression de votre compte. Etes vous certain ?"
  Messages()\en = "Deleting your account. Are you sure?"
  
  AddMapElement(Messages(), "30")
  Messages()\fr = "Erreur durant la suppression du compte."
  Messages()\en = "Error While deleting your account."

  AddMapElement(Messages(), "60")
  Messages()\fr = "Votre environnement de jeu existe déja."
  Messages()\en = "Your game environment already exists."
  
  AddMapElement(Messages(), "61")
  Messages()\fr = "Votre environnement est prêt."
  Messages()\en = "Your game environment is ready."
  
  AddMapElement(Messages(), "ex")
  Messages()\fr = "Etes vous certain de vouloir quitter le jeu ?"
  Messages()\en = "Are you sure you want to quit the game ?"
  
EndProcedure

;Returns the translation of a message
Procedure.s m(Key.s)
  Protected Buffer.s = "not defined !"
  
  If FindMapElement(Messages(), Key)
    Select Lang
      Case "Fr"
        Buffer = Messages()\fr
      Case "En"
        Buffer = Messages()\en
        
    EndSelect
  EndIf
  ProcedureReturn Buffer
EndProcedure

;-
;- U.T. Tools
Procedure.f AdjustFontSize(Size.l)
  Protected iimage
  Static fPpp.f
  
  If fPpp = 0
    iimage = CreateImage(#PB_Any, 1, 1)
    If IsImage(iimage)
      If StartVectorDrawing(ImageVectorOutput(iimage))
        fPpp = VectorResolutionX()
        StopVectorDrawing()
      EndIf
      FreeImage(iimage)
    EndIf
  EndIf
  ProcedureReturn (size * 96) / fPpp
EndProcedure

Procedure.s md5(Buffer.s)
  Protected *Buffer = AllocateMemory(500)    
  Protected MD5$
  
  If *Buffer
    PokeS(*Buffer, Buffer, -1, #PB_Ascii)
    MD5$ = Fingerprint(*Buffer, MemoryStringLength(*Buffer, #PB_Ascii), #PB_Cipher_MD5)
    FreeMemory(*Buffer) 
    ProcedureReturn MD5$    
  EndIf  
EndProcedure

;-
Procedure Exit()  
  Protected Window = EventWindow()
  
  Select Window
    Case #pr
      CloseWindow(#pr)
      DisableWindow(#mf, #False)
      
    Case #mf  
      If MessageRequester(m("info"), m("ex"), #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
        End  
      EndIf
  EndSelect    
EndProcedure
Le visuel est moche car il ne s'agit que d'un test de faisabilité.

Merci d'avance pour votre participation.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par Cool Dji »

Hello Falsam,

A l’exécution (5.62 X64), je n'ai qu'une page grise sans rien à l'écran.
Je ne peux donc rien saisir ni cocher. La touche escape fonctionne bien.
Faut-il une bibliothèque particulière ?

A++
Only PureBasic makes it possible
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par falsam »

Cool Dji a écrit :Faut-il une bibliothèque particulière ?
Non pas du tout. A mon avis tu as touché à la résolution de ton affichage. Genre tu es à 125% :wink:

Si c'est le cas alors remplace (ligne 64)

Code : Tout sélectionner

Width = DesktopWidth(0)
eight = DesktopHeight(0)
par

Code : Tout sélectionner

Width = GetSystemMetrics_(#SM_CXSCREEN)
Height = GetSystemMetrics_(#SM_CYSCREEN)
et ça fonctionnera.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
cage
Messages : 506
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par cage »

Bonjour Falsam,

Fonctionne très bien pour moi avec Windows 10 64-bit et PB 5.62 x64

cage
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.00 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par falsam »

Merci Cage pour ta participation.

Petite précision, il n'y a pas de base de données. Chaque utilisateur est représenté par un fichier JSON.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par GallyHC »

Bonjour,

Pour moi, création, connexion et suppression d'utilisateur OK.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par falsam »

Merci Gally.
GallyHC a écrit : ... et suppression d'utilisateur OK
Je vois que ton compte existe. Tu l'as crée une deuxième fois ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par GallyHC »

Oui autre compte "Test".

GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par falsam »

Ok merci Gally :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par zaphod_b »

Testé sous w10 pro x64 - version 1803 (dernière mise à jour) - et pb 5.62x64 : ça marche bien.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par falsam »

Merci zaphod_b. Visiblement tu as supprimé ton compte. Tu es allé jusqu'au bout de ce test ^^
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Mouillard
Messages : 77
Inscription : mer. 13/sept./2017 14:35
Localisation : Picardie (Somme)

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par Mouillard »

Bonjour Falsam, ce code fonctionne très bien, PB 5.62 W7 pro.
Sur la 1° colonne vos noms apparaissent bien et dans l'ordre alphabétique.
Dernière modification par Mouillard le dim. 13/mai/2018 18:38, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par falsam »

Merci Mouillard pour ta participation :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par Ar-S »

Fonctionne sans soucis.
5.62 x64
W10 x64
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Besoin d'alpha testeurs : Communication avec des scripts

Message par falsam »

Merci Ar-S :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Verrouillé