http://www.fivetechsoft.net/cgi-bin/myapp1 (Linux en Dreamhost hosting service)
myapp1.prg
#include "FiveWeb.ch"
//----------------------------------------------------------------------------//
function Main( cParams )
聽 聽local aParams := If( cParams != nil, hb_aTokens( cParams, ":" ), nil )
聽 聽local cParam := If( aParams != nil, aParams[ 1 ], "" )
聽 聽SET BACKIMAGE TO "http://fiveweb.googlecode.com/svn/trunk/images/citynight.jpg"
聽 聽
聽 聽SetTheme( "flick" )
聽 聽
聽 聽do case
聽 聽 聽 case cParam == "login"
聽 聽 聽 聽 聽 聽CheckLogin( aParams )
聽 聽 聽 case cParam == "users"
聽 聽 聽 聽 聽 聽Users()
聽 聽 聽 case cParam == "clients"
聽 聽 聽 聽 聽 聽Clients()
聽 聽 聽 otherwise
聽 聽 聽 聽 聽 聽Login()
聽 endcase
return nil
//----------------------------------------------------------------------------//
function Login()
聽 聽local oDlg, oImg
聽 聽local oGetName, cUserName := Space( 30 )
聽 聽local oGetPass, cPassword := ""
聽 聽DEFINE DIALOG oDlg TITLE "Login" SIZE 650, 400
聽 聽@ 聽30, 聽30 IMAGE oImg FILENAME "../images/user.png" SIZE 120, 120 OF oDlg
聽 聽@ 聽69, 190 SAY "User" SIZE 110, 40 OF oDlg
聽 聽@ 124, 190 SAY "Password" SIZE 110, 40 OF oDlg
聽 聽@ 聽66, 315 GET oGetName VAR cUserName SIZE 300, 40 OF oDlg
聽 聽@ 124, 315 GET oGetPass VAR cPassword SIZE 300, 40 OF oDlg PASSWORD
聽 聽@ 265, 189 BUTTON "Ok" SIZE 110, 40 OF oDlg ;
聽 聽 聽 ACTION ( "document.location = '" + AppName() + "?login:' + " ) + ;
聽 聽 聽 聽 聽 聽 聽'oGetName.value + ":" + oGetPass.value'
聽 聽@ 265, 335 BUTTON "Cancel" SIZE 110, 40 OF oDlg ;
聽 聽 聽 ACTION ( oDlg:End() ) // Executed in the server in advance
聽 聽ACTIVATE DIALOG oDlg NOWAIT
return nil
//----------------------------------------------------------------------------//
function CheckLogin( aParams )
聽 聽// ? aParams[ 2 ] 聽username
聽 聽// ? aParams[ 3 ] 聽password
聽 聽
聽 聽BuildMenu()
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
聽 聽local oMenu
聽 聽
聽 聽MENU oMenu
聽 聽 聽 MENUITEM "About"
聽 聽 聽 MENU
聽 聽 聽 聽 聽MENUITEM "This app..." ;
聽 聽 聽 聽 聽 聽 ACTION MsgAbout( "My FiveWeb app", "(c) FiveTech Software" )
聽 聽 聽 ENDMENU
聽 聽 聽
聽 聽 聽 MENUITEM "Files"
聽 聽 聽 MENU
聽 聽 聽 聽 聽MENUITEM "Users" ;
聽 聽 聽 聽 聽 聽 ACTION ( 'document.location = "' + AppName() + '?users"' )
聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽MENUITEM "Clients" ;
聽 聽 聽 聽 聽 聽 ACTION ( 'document.location = "' + AppName() + '?clients"' )
聽 聽 聽 ENDMENU
聽 聽 聽
聽 聽 聽 MENUITEM "Operations"
聽 聽 聽 MENUITEM "Help"
聽 聽ENDMENU
聽 聽
return oMenu
//----------------------------------------------------------------------------//
function Users()
聽 聽local oDlg, oServer, oBrw
聽 聽
聽 聽BuildMenu()
聽 聽
聽 聽oServer = TDolphinSrv():New( "mysql.fivetechsoft.net", "fiveweb", "fiveweb" )
聽 聽if oServer:hMySQL == nil
聽 聽 聽 MsgInfo( "can't connect to the database" )
聽 聽 聽 return nil
聽 聽endif
聽 聽 聽 聽 聽
聽 聽oServer:SelectDB( "fiveweb" )
聽 聽
聽 聽DEFINE DIALOG oDlg TITLE "Users" SIZE 1000, 600
聽 聽
聽 聽@ 10, 10 BROWSE oBrw SIZE 900, 100 OF oDlg ;
聽 聽 聽 ARRAY oServer:Query( "SELECT * FROM users LIMIT 0, 30" )
聽 聽
聽 聽ACTIVATE DIALOG oDlg NOWAIT
聽 聽
聽 聽oServer:End()
聽 聽
return nil 聽
//----------------------------------------------------------------------------//
function Clients()
聽 聽local oDlg, oServer, oBrw
聽 聽
聽 聽BuildMenu()
聽 聽
聽 聽oServer = TDolphinSrv():New( "mysql.fivetechsoft.net", "fiveweb", "fiveweb" )
聽 聽if oServer:hMySQL == nil
聽 聽 聽 MsgInfo( "can't connect to the database" )
聽 聽 聽 return nil
聽 聽endif
聽 聽 聽 聽 聽
聽 聽oServer:SelectDB( "fiveweb" )
聽 聽
聽 聽DEFINE DIALOG oDlg TITLE "Clients" SIZE 1200, 650
聽 聽
聽 聽@ 5, 2 BROWSE oBrw SIZE 1150, 100 OF oDlg ;
聽 聽 聽 ARRAY oServer:Query( "SELECT * FROM clients LIMIT 0, 30" )
聽 聽
聽 聽ACTIVATE DIALOG oDlg NOWAIT
聽 聽
聽 聽oServer:End()
聽 聽
return nil 聽
//----------------------------------------------------------------------------//