UCenter synchronization process:
The premise is that you need to add the applications that require synchronous login to the Ucenter (at least two applications can see the effect), and display: the communication is successful.
Assume that I have added two application websites, A and B.
1. first, when you log on to station A, after successful logon, the actual solution is to call the methods provided by uc_client to obtain two script codes (Station A and Station B) from UCenter ), the two script codes are the APIs/uc for accessing sites A and B. the logon method in php allows you to perform the session and cookie operations required for logon in the method.
2. when logging out, the operation and logon are the same. You need to obtain two script codes from the UCenter to trigger APIs/uc on site A and Site B. php logout method.
Note: after obtaining two script codes, you must run the code in the output browser. Otherwise, synchronous login and logout will not be implemented.
Suggestion: you can use browser monitoring to view the returned output values during development and debugging. I used chrome F12 to open the Network tag.
Instance details
The so-called single sign-on means that several sites share a single user Center for synchronous login and exit.
Server: Loog SSO
Customer service: ucenter. To be honest, the commercialization of dz has indeed led php to develop a lot.
Basic principles of ucenter:
In fact, users log on to the console, but ajax users won't find it.
Let's take a look at the specific procedures with ucenter:
Config. php [PHP code]:
The code is as follows: |
Copy code |
Define ('UC _ CONNECT ', 'mysql'); // method for connecting to UCenter: mysql/NULL. The default value is fscoketopen () // Database-related (the following variables must be configured when UC_DBLINK is not set during mysql connection) Define ('UC _ dbhost', 'localhost'); // UCenter database host Define ('UC _ dbuser', 'root'); // user name of the UCenter database Define ('UC _ DBPW ', '2017 & prime;); // UCenter database password Define ('UC _ dbname', 'ucenter'); // ucenter database name Define ('UC _ dbcharset', 'utf8 & prime;); // UCenter database character set Define ('UC _ dbtablepre', 'ucenter. UC _ '); // ucenter database table prefix Define ('UC _ key', 'safefewfef'); // The communication KEY of the UCenter, which must be consistent with that of the UCenter. Define ('UC _ API ', 'http: // www.111cn.net/uc'); // The URL address of the UCenter, which depends on this constant when calling the profile picture. Define ('UC _ charset', 'utf-8 & prime;); // UCenter character set Define ('UC _ IP', '2017. 0.0.1 & prime;); // UCenter IP address. Set this value when UC_CONNECT is not in mysql mode and the domain name of the current application server is resolved incorrectly. Define ('UC _ APPID ', '3 & prime;); // ID corresponding to the current ucenter application Define ('ucdomain ', 'http: // www.111cn.net/'); // Set the domain name // Some Cookie settings $ _ UC = array (); $ _ UC ["cookiedomain"] = "; // cookie scope $ _ UC ["cookiepath"] = '/'; // cookie action path $ _ UC ["cookiepre"] = 'UC _ '; // cookie prefix $ _ UC ["cookietime"] = '2017 & prime; // cookie validity period |
After the configuration file is written, add an application to the ucenter background to remember that the custom 'UC _ key' must be the same as that in config. php.
The next step is the api/uc. php in your home directory.
For example, if the application url is filled as a http://www.111cn.net, then I have a corresponding http://www.111cn.net/api/uc.php
If you want to customize it, confirm your correspondence.
The most important thing is api/uc. php. Synchronous login is to access the uc. php of each application. The dz has been given a demo.
[PHP code]:
The code is as follows: |
Copy code |
Define ('api _ deleteuser', 0); // note the API deletion switch Define ('api _ renameuser', 0); // note the API interface switch Define ('api _ gettag', 0); // note Define ('api _ synlogin', 1); // note: synchronous logon API switch Define ('api _ synlogout', 1); // switch the synchronous logout API Define ('api _ updatepw', 0); // note: change the user password Define ('api _ updatebadword', 0); // The note function is used to update the keyword list. Define ('api _ updatehosts', 0); // The note function is used to update the domain name resolution cache. Define ('api _ UPDATEAPPS ', 0); // The note function is used to update the application list. Define ('api _ UPDATECLIENT ', 0); // switch to update the client cache Define ('api _ UPDATECREDIT ', 0); // The note function is used to update user points. Define ('api _ GETCREDITSETTINGS ', 0); // note provides the point setting switch for UCenter. Define ('api _ getcredentials', 0); // note Define ('api _ updatecreditsettings', 0); // The note function is used to update the application points.
|
These parameters are all functional switches provided to other applications.
Finally, how can I log on to other applications synchronously on my own page?
[PHP code]:
The code is as follows: |
Copy code |
Include_once '../config. Php '; Include_once '../uc_client/client. Php '; |
Your login authentication section
The code is as follows: |
Copy code |
List ($ uid, $ username, $ password) = uc_user_login ($ _ POST [username], $ _ POST [password]); // enter ucenter for verification $ Ucsynlogin = uc_user_synlogin ($ uid); // synchronous login Echo $ ucsynlogin; // because ajax requires echo
|
With only php, Kang Sheng's solution is quite good, and the p3p header is used to achieve single-point login for different domain names
The disadvantage is to use ajax client requests. If there are more than 10 applications, the login speed will slow down. At this time, you can consider Loong SSO for the next seven nights.
After learning about the CMS and ucenter communication of Dongdong php, it is not difficult.