首页 > 解决方案 > PHP $_SESSION 未在 android webview 中注册

问题描述

我们创建了一个应用程序,将我们的网站作为 webview。在尝试登录我们的网站时,我们发现 PHP $_SESSION 没有被注册,而其他 PHP 变量工作正常($_POST,$_GET)。我们在 mainActivity java 文件上启用了 cookie、javascript,但仍然无济于事。这是 MainActivity Java 文件。

package com.example.app;  

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.webkit.WebSettings; 
import android.webkit.WebStorage; 
import android.webkit.CookieManager; 


public class MainActivity extends Activity{
    private ProgressBar progressBar;
    private WebView webView;
        @SuppressLint("SetJavaScriptEnabled") 
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);  
            progressBar = (ProgressBar) findViewById(R.id.progressBar);
            progressBar.setMax(100);
            webView = (WebView) findViewById(R.id.simpleWebView);
            webView.setWebViewClient(new WebViewClientDemo());
            webView.setWebChromeClient(new WebChromeClientDemo());
              WebSettings settings = webView.getSettings();
  settings.setJavaScriptEnabled(true);
  settings.setDomStorageEnabled(true); 
  settings.setDatabaseEnabled(true); 

CookieManager.getInstance();


            webView.loadUrl("https://ecitizen.in/");
        }
        private class WebViewClientDemo extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
        progressBar.setVisibility(View.GONE);
        progressBar.setProgress(100);
        }
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        progressBar.setVisibility(View.VISIBLE);
        progressBar.setProgress(0);
        }       
    }
        private class WebChromeClientDemo extends WebChromeClient {
        public void onProgressChanged(WebView view, int progress) {
        progressBar.setProgress(progress);
        }
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        else {
            finish();
        }
        return super.onKeyDown(keyCode, event);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       return true;
    }
}  

我在哪里我错了。

标签: phpandroidsessionandroid-webview

解决方案


正如@Abracadaver 所写,PHP 部分应该缺少工作session_start()所需的内容。$_SESSION


推荐阅读