⑴ 高分求代碼錯誤Fatal error: Call to undefined function _() in D:\wwwroot\libs\utils.php on line 24
是你數組鍵值的問題
你把數組寫成這樣的:
-1 => "_(irrelevante)"
依次類推
OK。問題解決:)
試一試
⑵ 怎麼連接android和php mysql資料庫
如何連接android和php mysql資料庫
我們先來看一個簡單的Android app例子(這里是一個商品存貨清單項目),在Android程序中,我們可以訪問(call)PHP腳本來執行簡單的CRUD操作(創建,讀取,更新,刪除)。為了使你對它的體系結構有一個大概的了解,這里先說一下它是怎麼工作的。首先你的Android項目訪問(call)PHP腳本來執行一條數據操作,我們稱它為「創建」。然後PHP腳本連接MySQL資料庫來執行這個操作。這樣,數據從Android程序流向PHP腳本,最終存儲在MySQL資料庫中。
好了,讓我們來深入的看一下。
請注意:這里提供的代碼只是為了使你能簡單的連接Android項目和PHP,MySQL。你不能把它作為一個標准或者安全編程實踐。在生產環境中,理想情況下你需要避免使用任何可能造成潛在注入漏洞的代碼(比如MYSQL注入)。MYSQL注入是一個很大的話題,不可能用單獨的一篇文章來說清楚,並且它也不在本文討論的范圍內,所以本文不以討論。
1. 什麼是WAMP Server
WAMP是Windows,Apache,MySQL和PHP,Perl,Python的簡稱。WAMP是一個一鍵安裝的軟體,它為開發PHP,MySQL Web應用程序提供一個環境。安裝這款軟體你相當於安裝了Apache,MySQL和PHP。或者,你也可以使用XAMP。
2. 安裝和使用WAMP Server
你可以從http://www.wampserver.com/en/下載WAMP,安裝完成之後,可以從開始->所有程序->WampServer->StartWampServer運行該程序。
在瀏覽器中輸入http://localhost/來測試你的伺服器是否安裝成功。同樣的,也可以打開http://localhost/phpmyadmin來檢驗phpmyadmin是否安裝成功。
3. 創建和運行PHP項目
現在,你已經有一個能開發PHP和MYSQL項目的環境了。打開安裝WAMP Server的文件夾(在我的電腦中,是C:\wamp\),打開www文件夾,為你的項目創建一個新的文件夾。你必須把項目中所有的文件放到這個文件夾中。
新建一個名為android_connect的文件夾,並新建一個php文件,命名為test.php,嘗試輸入一些簡單的php代碼(如下所示)。輸入下面的代碼後,打開http://localhost/android_connect/test.php,你會在瀏覽器中看到「Welcome,I am connecting Android to PHP,MySQL」(如果沒有正確輸入,請檢查WAMP配置是否正確)
test.php
4. 打開MainScreenActivity.java為main_screen.xml文件里的兩個按鈕添加點擊事件
MainScreenActivity.java
7. 添加一個新產品(寫入)
創建一個新的view和activity來向MySQL資料庫添加新產品。
新建一個簡單的表單,創建提供輸入產品名稱,價格和描述的EditText
add_proct.xml
8. 新建一個Activity來處理向MySQL資料庫插入新產品。
新建名為NewProctActivity.java的文件,輸入以下代碼。在下面的代碼中
首先,從EditText獲得用戶輸入的產品數據,格式化成基本參數格式
然後,向create_proct.php發送請求,通過HTTP POST創建一個新的產品
最後,從create_proct.php獲取json返回值,如果success值為1,新得到的列表中就加入了新增的產品。
NewProctActivity.java
11. JSONParser類
我用一個JSONParser類從URL獲得JSON格式的數據。這個類支持兩種http請求,GET和POST方法從URL獲取JSON數據
JSONParser.java
packagecom.example.androidhive; importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.io.UnsupportedEncodingException; importjava.util.List; importorg.apache.http.HttpEntity; importorg.apache.http.HttpResponse; importorg.apache.http.NameValuePair; importorg.apache.http.client.ClientProtocolException; importorg.apache.http.client.entity.UrlEncodedFormEntity; importorg.apache.http.client.methods.HttpGet; importorg.apache.http.client.methods.HttpPost; importorg.apache.http.client.utils.URLEncodedUtils; importorg.apache.http.impl.client.DefaultHttpClient; importorg.json.JSONException; importorg.json.JSONObject; importandroid.util.Log; publicclassJSONParser { staticInputStream is = null; staticJSONObject jObj = null; staticString json = ""; // constructor publicJSONParser() { } // function get json from url // by making HTTP POST or GET mehtod publicJSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { // Making HTTP request try{ // check for request method if(method == "POST"){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = newDefaultHttpClient(); HttpPost httpPost = newHttpPost(url); httpPost.setEntity(newUrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); }elseif(method == "GET"){ // request method is GET DefaultHttpClient httpClient = newDefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?"+ paramString; HttpGet httpGet = newHttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch(UnsupportedEncodingException e) { e.printStackTrace(); } catch(ClientProtocolException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } try{ BufferedReader reader = newBufferedReader(newInputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = newStringBuilder(); String line = null; while((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch(Exception e) { Log.e("Buffer Error", "Error converting result "+ e.toString()); } // try parse the string to a JSON object try{ jObj = newJSONObject(json); } catch(JSONException e) { Log.e("JSON Parser", "Error parsing data "+ e.toString()); } // return JSON String returnjObj; } }
到這里,本教程就結束了。
⑶ 如何在CentOS 7.3上安裝Apache,PHP 7.1和M6767ySQL
1初步說明
在本教程中,我使用IP地址為192.168.1.100的hostname server1.example.com 。 這些設置可能會有所不同,因此您必須在適當的情況下更換它們。
我會在這里添加EPEL repo來安裝最新的phpMyAdmin,如下所示:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
yum -y install epel-release
要在shell上編輯文件,我將安裝nano編輯器。 如果您喜歡vi進行文件編輯,請跳過此步驟。
yum -y install nano
2安裝MySQL / MariaDB
MariaDB是原始MySQL開發人員Monty Widenius的MySQL分支。 MariaDB與MySQL兼容,我選擇使用MariaDB而不是MySQL。 運行此命令以安裝MariaDB:
yum -y install mariadb-server mariadb
然後,我們為MySQL創建系統啟動鏈接(以便每當系統啟動時,MySQL自動啟動)並啟動MySQL伺服器:
systemctl start mariadb.service
systemctl enable mariadb.service
設置MySQL根帳戶的密碼:
mysql_secure_installation
[root@server1 ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): <--ENTER
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n]
New password: <--yourmariadbpassword
Re-enter new password: <--yourmariadbpassword
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
proction environment.
Remove anonymous users? [Y/n] <--ENTER
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <--ENTER
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a proction environment.
Remove test database and access to it? [Y/n] <--ENTER
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <--ENTER
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
[root@server1 ~]#
3安裝Apache
CentOS 7附帶apache 2.4。 Apache可以直接作為CentOS 7軟體包使用,因此我們可以這樣安裝:
yum -y install httpd
這里是安裝過程的截圖。
現在配置您的系統啟動Apache啟動時...
systemctl start httpd.service
systemctl enable httpd.service
為了能夠從外部訪問Web伺服器,我們必須打開防火牆中的HTTP(80)和HTTPS(443)埠。 CentOS上的默認防火牆是firewalld,可以使用firewalld-cmd命令配置。
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
現在將您的瀏覽器指向伺服器的IP地址,在我的情況下為http://192.168.1.100 ,您應該看到Apache佔位符頁面:
4安裝PHP
CentOS附帶的PHP版本相當舊(PHP 5.4),因此,我將在此步驟中顯示一些選項,從Remi存儲庫安裝更新的PHP版本,如PHP 7.0或7.1。
添加Remi CentOS存儲庫。
rpm -Uvhhttp://rpms.remirepo.net/enterprise/remi-release-7.rpm
安裝yum-utils,因為我們需要yum-config-manager實用程序。
yum -y install yum-utils
並運行yum更新
yum update
現在您必須選擇要在伺服器上使用哪個PHP版本。 如果你喜歡使用PHP 5.4,那麼繼續下一個命令。 要安裝PHP 7.0,請遵循第4.1章和PHP 7.1中的命令,使用第4.2章。
要安裝PHP 5.4,請運行以下命令:
yum -y installphp
4.1安裝PHP 7.0(可選)
我們可以安裝PHP 7.0和Apache PHP 7.0模塊,如下所示:
yum-config-manager --enable remi-php70
yum -y installphp php-opcache
4.2安裝PHP 7.1(可選)
如果要使用PHP 7.1,請使用:
yum-config-manager --enable remi-php71
yum -y installphp php-opcache
在這個例子中,在可下載的虛擬機中,我將使用PHP 7.1。
我們必須重新啟動Apache來應用更改:
systemctl restart httpd.service
5測試PHP /獲取有關您的PHP安裝的詳細信息
默認網站的文檔根目錄是/ var / www / html。 我們將在該目錄中創建一個小型的PHP文件(info.php),並在瀏覽器中調用它來測試PHP安裝。 該文件將顯示有關我們的PHP安裝的許多有用的細節,例如安裝的PHP版本。
nano /var/www/html/info.php
<?php
phpinfo();?>
現在我們在瀏覽器中調用該文件(例如http://192.168.1.100/info.php ):
如您所見,PHP 7.1正在工作,它正在通過Apache 2.0處理程序,如Server API行所示。 如果您進一步向下滾動,您將看到在PHP中已啟用的所有模塊。 MySQL沒有列出,這意味著我們還沒有在PHP中支持MySQL。
6在PHP中獲取MySQL支持
要在PHP中獲得MySQL支持,我們可以安裝php71w-mysql包。 安裝一些其他PHP模塊是一個好主意,也可能需要它們用於應用程序。 您可以搜索可用的PHP5模塊,如下所示:
yum search php
選擇您需要的並安裝它們:
yum -y install php-mysql
在下一步中,我將安裝一些常見的PHP模塊,CMS系統如Wordpress,Joomla和Drupal所需:
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstringphp-soap curl curl-devel
現在重新啟動Apache Web伺服器:
systemctl restart httpd.service
現在在您的瀏覽器中重新載入http://192.168.1.100/info.php並再次向下滾動到模塊部分。 你現在應該找到很多新的模塊,如Curl等。
如果您不再需要php信息輸出,那麼為了安全起見,請刪除該文件。
rm/var/www/html/info.php
7 phpMyAdmin安裝
phpMyAdmin是一個Web界面,您可以通過它來管理MySQL資料庫。
phpMyAdmin現在可以安裝如下:
yum -y install phpMyAdmin
現在我們配置phpMyAdmin。 我們更改Apache配置,以便phpMyAdmin不僅允許從localhost進行連接(通過注釋<RequireAny>節並添加「要求所有已授予」行):
nano /etc/httpd/conf.d/phpMyAdmin.conf
[...]
Alias /phpMyAdmin /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdmin<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfMole mod_authz_core.c>
# Apache 2.4
# <RequireAny>
# Require ip 127.0.0.1
# Require ip ::1
# </RequireAny>
Require all granted
</IfMole>
<IfMole !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfMole>
</Directory>
<Directory /usr/share/phpMyAdmin/>
Options none AllowOverride Limit
Require all granted</Directory>
[...]
接下來,我們將phpMyAdmin中的身份驗證從cookie更改為http :
nano /etc/phpMyAdmin/config.inc.php
[...]$cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)?[...]
重新啟動Apache:
systemctl restart httpd.service
之後,您可以訪問http://192.168.1.100/phpmyadmin/下的phpMyAdmin :
8作為虛擬機下載
此設置可用於以ova / ovf格式(與VMWare和Virtualbox兼容)的虛擬機下載,以了解用戶的身份。
VM的登錄詳細信息
Linux root密碼是:howtoing。
Rhe MySQL的root密碼是:howtoing
請在第一次登錄時更改兩個密碼。
虛擬機的IP地址為192.168.1.100
⑷ tcpdf msyh.php生成微軟雅黑為什麼無效
這種方式生成的PDF文件的優點是:文件體積小,生成快速。但也有缺點是,沒有嵌入中文字體,只限於安裝了Adobe Reader之後才能正常顯示。那萬一用戶使用的是FoxIt Reader或者是Linux操作系統呢?顯示效果就不一樣了。因此,為了保證生成的PDF文件在任何環境下都有同樣的顯示效果,嵌入字體是必需的。
Windows下有很多中文字體,但是我們要用在TCPDF中的中文字體有下面幾個要求:
< View plain text >
php
* 支持Unicode,因為TCPDF支持的是Unicode;
* 體積越小越好;
* 最好是也支持繁體中文;
這樣看來,微軟雅黑以及方正的一些字體都符合要求。但是他們都是商業字體,而且個頭都不小,以微軟雅黑為例,msyh.ttf 文件就超過10M,如果使用它,生成的PDF文件體積也會很大。
綜合考慮,我覺得」Droid Sans Fallback」字體符合要求:
< View plain text >
php
* 首先它是免費字體;
* 其次它也是Unicode編碼,支持簡體繁體中文以及日文韓文等等;
* 然後它的體積很小,不超過5M。
然而TCPDF不支持TTF字體文件,因此我們先將它轉換成TCPDF支持的格式,然後再使用。在TCPDF目錄下有個fonts子目錄,這個子目錄下又有個utils,這裡面帶有一個字體轉換工具ttf2ufm.exe。下面是轉換的步驟:
在網上很容易找到Droid Sans Fallback字體的下載鏈接,因此在這里就沒有必要多做描述了。我們把下載到的 DroidSansFallback.ttf 復制到 TCPDF\\fonts\\utils 下面,然後打開Windows的命令行,切換到此路徑下,輸入如下命令:
< View plain text >
php
D:\\www\\tcpdf\\fonts\\utils>ttf2ufm -a -F DroidSansFallback.ttf
等待一段時間,等到命令行窗口顯示
< View plain text >
php
"Finished - font files created"
之後,可以發現此目錄下生成了DroidSansFallback.afm,DroidSansFallback.t1a 和 DroidSansFallback.ufm 這三個文件。
在命令行中輸入
< View plain text >
php
"C:\\Program Files\\WAMP\\PHP5\\php.exe" -q makefont.php DroidSansFallback.ttf DroidSansFallback.ufm
說明:這里的」C:\\Program Files\\WAMP\\PHP5\\php.exe」為php.exe文件所在的路徑,請根據實際情況輸入。回車運行之後,稍等片刻,命令行窗口中會提示
< View plain text >
php
Font definition file generated
至此大功告成。將生成的droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z這三個文件復制到 TCPDF\\fonts 下面即可。
打開example_038.php文件,將
< View plain text >
php
$pdf->SetFont(\'stsongstdlight\', \'\', 20);
修改為
< View plain text >
php
$pdf->SetFont(\'droidsansfallback\', \'\', 20);
這樣就能夠調用我們剛才生成的字體,再訪問 http://localhost/tcpdf/examples/example_038.php 就可以看到重新生成的PDF文檔。