`
zhengdl126
  • 浏览: 2539200 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

完成登陆实例

 
阅读更多

 

 

 

 

 

 

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/loginRoot"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white1"
    android:orientation="vertical" >

    <include layout="@layout/header_account_bar" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="30dp"
            android:layout_marginBottom="20dp"
            android:background="@drawable/login_chart"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="10dp"
                android:orientation="horizontal" >

                <TextView
                    style="@style/account_register_textview"
                    android:text="@string/account_name" />

                <EditText
                    android:id="@+id/name_text"
                    style="@style/account_register_edittext" />
            </LinearLayout>

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/login_chart_line" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="10dp"
                android:orientation="horizontal" >

                <TextView
                    style="@style/account_register_textview"
                    android:text="@string/account_pwd" />

                <EditText
                    android:id="@+id/password_text"
                    style="@style/account_register_edittext"
                    android:password="true" />
            </LinearLayout>

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/login_chart_line" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="5dp"
                android:orientation="horizontal" >

                <TextView
                    style="@style/account_register_textview"
                    android:layout_gravity="center_vertical"
                    android:text="@string/register_account_type" />

                <RelativeLayout style="@style/account_register_edittext" >

                    <EditText
                        android:id="@+id/type_text"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:editable="false"
                        android:singleLine="true"
                        android:text="@string/register_account_type_default"
                        android:textColor="@color/textcolor" />

                    <ImageButton
                        android:id="@+id/type_button"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_alignBottom="@+id/type_text"
                        android:layout_alignRight="@+id/type_text"
                        android:layout_alignTop="@+id/type_text"
                        android:layout_marginBottom="2dp"
                        android:layout_marginRight="1dp"
                        android:layout_marginTop="1dp"
                        android:background="@drawable/register_more_select" />
                </RelativeLayout>
            </LinearLayout>

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/login_chart_line"
                android:visibility="gone" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="5dp"
                android:orientation="horizontal" >

                <CheckBox
                    android:id="@+id/login_cb_savepwd"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginBottom="10dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginTop="10dp"
                    android:button="@drawable/cpse_btn_check"
                    android:checked="true"
                    android:text="@string/save_pwd"
                    android:textColor="@color/textcolor"
                    android:textSize="18sp" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"
            android:orientation="vertical" >

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp" >

                <Button
                    android:id="@+id/login_btn_register"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:background="@drawable/new_account"
                    android:text="@string/account_register"
                    android:textColor="@color/textcolor"
                    android:textSize="18sp" />
                <!--
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignBottom="@+id/login_btn_register"
                    android:layout_alignRight="@+id/login_btn_register"
                    android:layout_alignTop="@+id/login_btn_register"
                    android:layout_marginBottom="2dp"
                    android:layout_marginRight="1dp"
                    android:layout_marginTop="1dp"
                    android:background="@drawable/regist_goto" />
                -->
            </RelativeLayout>

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:background="@drawable/bg_line" />

            <Button
                android:id="@+id/login_button"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="10dp"
                android:layout_marginTop="10dp"
                android:background="@drawable/register_finish_button"
                android:text="@string/login"
                android:textColor="@color/white1"
                android:textSize="22sp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

 

 

 

 

AccountItem.java

 

 



import java.io.Serializable;

public class AccountItem implements Serializable {

    private static final long serialVersionUID = 1L;
   
    private int id;
    private String username;
    private String email;
    private String type;
    private String truename;
    private String password;
    private String repwd;
    private String country;
    private String company;
    private String job;
    private String productRange;
    private String department;
    private String mobile;
   
    private String qc_url;
   
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getTruename() {
        return truename;
    }
    public void setTruename(String truename) {
        this.truename = truename;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getRepwd() {
        return repwd;
    }
    public void setRepwd(String repwd) {
        this.repwd = repwd;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public String getProductRange() {
        return productRange;
    }
    public void setProductRange(String productRange) {
        this.productRange = productRange;
    }
    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }
   
    public String getQc_url() {
        return qc_url;
    }
    public void setQc_url(String qc_url) {
        this.qc_url = qc_url;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    @Override
    public String toString() {
        String tmp = "Account : id = "+id+";username = "+username +";company = "+company;
        return tmp;
    }

}

 

 

 

 

 

 

AccountLoginActivity.java

 

 

 

package com.cps.media.ui.account;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

import com.cps.media.R;
import com.cps.media.model.AccountItem;
import com.cps.media.model.ExhibitorItem;
import com.cps.media.ui.LoadingActivity;
import com.cps.media.ui.exhibitors.ExhibitorActivity;
import com.cps.media.util.CONST;
import com.cps.media.util.Util;

public class AccountLoginActivity extends Activity implements
        View.OnClickListener, OnTouchListener {

    private String TAG = "AccountLoginActivity";

    private ImageButton mBackImageButton;

    private Button mRegisterButton;

    private EditText mTypeEditText;

    private EditText mNameEditText;

    private EditText mPwdEditText;

    private ImageButton mTypeSelectButton;

    private AccountItem mAccount;

    private Button mLoginButton;
   
    private SharedPreferences mConfig;
   
    private CheckBox mSaveAccountCheckBox;
   
    private Intent mIntent;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_account_login);

        mConfig = this.getSharedPreferences(Util.CONFIG_FILE, MODE_PRIVATE);

        mAccount = new AccountItem();
       
        //set default account type
        String[] values = getResources().getStringArray(
                R.array.account_type_value);
        mAccount.setType(values[0]);
       
        mIntent = new Intent(this,LoadingActivity.class);

        mSaveAccountCheckBox = (CheckBox) findViewById(R.id.login_cb_savepwd);
        mSaveAccountCheckBox.setOnClickListener(this);
        mBackImageButton = (ImageButton) findViewById(R.id.btn_newscontent_back);
        mBackImageButton.setOnClickListener(this);
        mRegisterButton = (Button) findViewById(R.id.login_btn_register);
        mRegisterButton.setOnClickListener(this);
        mTypeEditText = (EditText) findViewById(R.id.type_text);
        mTypeEditText.setOnClickListener(this);
        mTypeEditText.setOnTouchListener(this);
        mTypeSelectButton = (ImageButton) findViewById(R.id.type_button);
        mTypeSelectButton.setOnClickListener(this);
        mNameEditText = (EditText) findViewById(R.id.name_text);
        mPwdEditText = (EditText) findViewById(R.id.password_text);
        mLoginButton = (Button) findViewById(R.id.login_button);
        mLoginButton.setOnClickListener(this);
    }
   
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
       
        //如果上次有记住账号密码,则在此处赋值显示出来
        String[] values = getResources().getStringArray(
                R.array.account_type_value);
        if(mConfig.contains("issave")){
            if(mConfig.getBoolean("issave", false)){
                mAccount.setId(mConfig.getInt("id", 0));
                mAccount.setUsername(mConfig.getString("name", ""));
                mAccount.setPassword(mConfig.getString("pwd", ""));
                mAccount.setEmail(mConfig.getString("email", ""));
                mAccount.setType(mConfig.getString("type", values[0]));
                mNameEditText.setText(mAccount.getUsername());
                mPwdEditText.setText(mAccount.getPassword());
                mSaveAccountCheckBox.setChecked(true);
                String[] types = getResources().getStringArray(
                        R.array.account_type); // array
               
                int tmp = 0;
                for (int j = 0; j < values.length; j++) {
                    if (values[j].toString().trim().equals(mConfig.getString("type", values[0]))) {
                        tmp = j;
                        break;
                    }
                }
               
                mTypeEditText.setText(types[tmp]);
               
            }else{
                    mSaveAccountCheckBox.setChecked(false);
            }
        }else{
            mSaveAccountCheckBox.setChecked(true);
            SharedPreferences.Editor editor = mConfig.edit();
            editor.putBoolean("issave", mSaveAccountCheckBox.isChecked());
            editor.commit();
        }
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id) {
        case R.id.btn_newscontent_back:
            backKey();
            break;
        case R.id.login_btn_register:
            Intent intent = new Intent(this, AccountRegisterActivity.class);
            startActivity(intent);
            finish();
            overridePendingTransition(R.anim.news_dync_in_from_right, R.anim.news_dync_out_to_left);
            break;
        case R.id.type_button:
            showChooseTypeDialog();
            break;
        case R.id.login_button:
            String name = mNameEditText.getText().toString().trim();
            String pwd = mPwdEditText.getText().toString().trim();
            if (name == null || name.equals("") || pwd == null
                    || pwd.equals("")) {
                Toast.makeText(AccountLoginActivity.this, getResources().getString(R.string.notify_name_pwd), Toast.LENGTH_SHORT)
                        .show();
                return;
            }
            mLoginButton.setEnabled(false);
            mAccount.setUsername(mNameEditText.getText().toString().trim());
            mAccount.setPassword(mPwdEditText.getText().toString().trim());
            submitData();
            break;
        case R.id.login_cb_savepwd:
            SharedPreferences.Editor editor = mConfig.edit();
            if(!mSaveAccountCheckBox.isChecked()){
                editor.clear();
            }
            editor.putBoolean("issave", mSaveAccountCheckBox.isChecked());
            editor.commit();
            break;
        default:
            break;
        }
    }
   
    private void submitData() {
       
        mIntent.putExtra(Util.ACCOUNT_TYPE, Util.ACCOUNT_LOGIN_VALUE);
        startActivity(mIntent);
        Thread t = new Thread() {
            @Override
            public void run() {
                super.run();
                HttpClient client = new DefaultHttpClient();
                StringBuilder builder = new StringBuilder();
                int error = 1;
                String url = CONST.URL_ACCOUNT_LOGIN;
                try {
                    url = url.replace("{0}", URLEncoder.encode(mAccount.getUsername(),CONST.URL_ENCODING_UTF_8));
                    url = url.replace("{1}", URLEncoder.encode(mAccount.getPassword(),CONST.URL_ENCODING_UTF_8));
                    url = url.replace("{2}", URLEncoder.encode(mAccount.getType(),CONST.URL_ENCODING_UTF_8));
                } catch (Exception e) {
                    e.printStackTrace();
                }
               
                Log.d(TAG,"url = "+ url);
                HttpGet myget = new HttpGet(url);

                try {
                    HttpResponse response = client.execute(myget);
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(response.getEntity()
                                    .getContent()));
                    for (String s = reader.readLine(); s != null; s = reader
                            .readLine()) {
                        builder.append(s);
                    }
                    JSONObject jsonObject = new JSONObject(builder.toString());
                    error = jsonObject.getInt("errno");
                    String errormsg = jsonObject.getString("errmsg");
                    Log.v("wgp", "error=" + error);
                    Log.v("wgp", "errormsg=" + errormsg);
                    if (error == 0) {
                        mAccount.setId(jsonObject.getJSONObject("data").getInt("userid"));
                        mAccount.setEmail(jsonObject.getJSONObject("data").getString("email"));
                        try {
                            mAccount.setQc_url(jsonObject.getJSONObject("data").getString("qc_url"));
                        } catch (Exception e) {
                            Log.d(TAG,"user have no qc_url");
                        }
                        handler.sendEmptyMessage(1);
                    }else{
                        handler.sendEmptyMessage(-1);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    handler.sendEmptyMessage(-1);
                } finally {
                }
            }
        };
        t.start();
    }
   
    Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            Intent intent = new Intent(Util.LOADING_BROADCAST_RECIVER);
            sendBroadcast(intent);
            if(msg.what == 1){
                SharedPreferences.Editor editor = mConfig.edit();
                Log.d(TAG, mAccount.toString());
                if(mSaveAccountCheckBox.isChecked()){
                    //写入需要记住的信息
                    editor.putInt("id", mAccount.getId());
                    editor.putString("name", mAccount.getUsername());
                    editor.putString("pwd", mAccount.getPassword());
                    editor.putString("email", mAccount.getEmail());
                    editor.putString("type", mAccount.getType());
                    editor.putString("qc_url", mAccount.getQc_url());
                    editor.commit();
                }
                AccountManager.getInstance().setAccount(mAccount);
                Toast.makeText(AccountLoginActivity.this, getResources().getString(R.string.welcome), Toast.LENGTH_SHORT).show();

                goAccountCenter();
            }else if(msg.what == -1){
                Toast.makeText(AccountLoginActivity.this, getResources().getString(R.string.login_failure), Toast.LENGTH_SHORT).show();
            }
            mLoginButton.setEnabled(true);
//            sendBroadcast(mIntent);
        };
    };
   
    private void goAccountCenter(){
        if(mAccount.getType().equals(AccountManager.TYPE_USER)){
            ExhibitorItem item = new ExhibitorItem();
            item.setId(mAccount.getId());
            Intent intent = new Intent(this,ExhibitorActivity.class);
            intent.putExtra("exhibitor_item",item);
            intent.putExtra("scan", true);
            startActivity(intent);
            finish();
            //切换时的动画
            overridePendingTransition(R.anim.news_dync_in_from_right,R.anim.news_dync_out_to_left);
        }else if(mAccount.getType().equals(AccountManager.TYPE_VIEWER)){
            Intent intent = new Intent(AccountLoginActivity.this,AccountCenterActivity.class);
            startActivity(intent);
            finish();
            overridePendingTransition(R.anim.news_dync_in_from_right,R.anim.news_dync_out_to_left);
        }
    }
   
    private void backKey() {
        setResult(RESULT_OK);
        finish();
        overridePendingTransition(R.anim.news_dync_in_from_left,R.anim.news_dync_out_to_right);
    }

    private void showChooseTypeDialog() {
        final String[] types = getResources().getStringArray(
                R.array.account_type); // array
        final String[] values = getResources().getStringArray(
                R.array.account_type_value);
        String defualt = mTypeEditText.getText().toString();
        int tmp = 0;
        for (int j = 0; j < types.length; j++) {
            if (types[j].toString().trim().equals(defualt)) {
                tmp = j;
                break;
            }
        }
       
        //弹出对话框选择类型
        new AlertDialog.Builder(AccountLoginActivity.this)
                .setTitle("请选择用户类别")
                //单选
                .setSingleChoiceItems(types, tmp,
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                mTypeEditText.setText(types[which]);
                                mAccount.setType(values[which]);
                                dialog.dismiss();
                            }

                        }).show();
    }

    //xml类型选择的touch事件
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            int id = v.getId();
            switch (id) {
            case R.id.type_text:
                showChooseTypeDialog();
                break;
            default:
                break;
            }
        }
        return false;
    }
}

 

 

 

 

 

 

  • 大小: 25.8 KB
分享到:
评论

相关推荐

    c#.net登陆实例

    这个“c#.net登陆实例”旨在提供一个基础的登录系统教学,帮助开发者理解如何利用C#语言和.NET框架来实现用户验证。下面我们将深入探讨这个实例中的关键知识点。 1. **C#基础知识**: - **变量与数据类型**:在...

    简单ssh登陆实例

    通过这个简单SSH登陆实例,开发者可以深入理解SSH框架的协同工作方式,以及它们如何共同完成一个基本的用户认证任务。同时,这也能帮助开发者熟悉MyEclipse 7中项目的构建和调试流程,提升开发效率。在实际项目中,...

    struts+hibernate+spring登陆实例

    在这个"SSH登陆实例"中,我们将探讨这三大框架如何共同构建一个用户登录系统。 **Struts框架**: Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架,主要用于控制应用程序的流程。在登录...

    SSH登陆实例(spring strus hibernate集成登陆实例)

    10. **测试**:运行项目,访问登录页面,输入用户信息,提交后系统会调用SSH框架完成验证过程,显示相应的反馈。 这个SSH登录实例展示了如何利用这三大框架协同工作,实现一个完整的用户登录功能。通过理解并实践这...

    php实现用户登陆简单实例

    php实现用户登陆简单实例 前言: 最近要完成的最后一个部分,就是对用户提交的数据进行管理,至于管理,那肯定就是管理员的事了,那一定涉及登陆,验证账号权限,账号是否过期等等问题。 所需知识 session,确实是很...

    一个SSH的登陆注册实例

    总的来说,这个SSH的登陆注册实例是一个实践性的教学资源,可以帮助初学者深入理解SSH框架的集成使用,以及它们如何共同实现Web应用的核心功能。通过研究这个实例,开发者可以学习到如何处理HTTP请求,如何操作...

    asp.net access 注册 登陆实例

    总结来说,ASP.NET与Access结合实现用户注册和登录,需要完成数据库设计、数据库连接、SQL操作、页面交互逻辑以及安全性方面的考虑。这个实例为初学者提供了理解Web应用开发中用户管理的基本步骤,同时也适用于小...

    struts+hibernate登陆注册实例

    本实例结合这两种技术,实现了一个学生和管理员的登录注册功能,这为我们提供了理解这两种框架协同工作的一个实际示例。 **Struts2 框架**: Struts2 是一个基于MVC(Model-View-Controller)设计模式的Java Web...

    Struts+Spring+Hibernate登陆实例

    在这个"Struts+Spring+Hibernate登陆实例"中,我们将深入探讨这三个框架如何整合来实现一个完整的用户登录功能。 **Struts框架**:这是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,主要用于控制...

    jsp_servlet_jdbc登陆实例

    本文将深入探讨这些技术以及如何利用它们实现一个Oracle数据库的登陆实例。 首先,`JSP(JavaServer Pages)`是Java平台上的动态网页技术,允许开发者将Java代码嵌入到HTML或XML文档中,以实现服务器端的动态内容...

    java dwr3.0(Netbeans ide7.0)推送及登陆实例

    在"java dwr3.0(Netbeans ide7.0)推送及登陆实例"中,我们可以预期学习到以下知识点: 1. **DWR配置**:如何在NetBeans IDE 7.0中集成DWR框架,设置DWR的配置文件(dwr.xml),定义允许浏览器访问的Java类和方法。 ...

    adajx_struts2登陆框实例

    在本实例中,“adajx_struts2登陆框”着重展示了如何利用Struts2框架与AJAX技术结合,创建一个动态、交互式的登录界面。 首先,我们需要理解Struts2的核心概念。Struts2框架通过Action类处理用户请求,并返回相应的...

    ssh2登陆的实例

    SSH(Secure Shell)是...以上就是SSH2登陆实例中的主要知识点。理解并熟练掌握这些,可以让你在开发中安全、高效地使用SSH2框架进行远程操作。记得在实际操作中,始终要遵循最佳安全实践,保护你的系统免受潜在威胁。

    三层架构之系统登陆实例.pdf

    在具体的系统登陆实例中,创建了一个名为LoginDemo的数据库,包含两个表:Users(存储用户信息,如ID、用户名、密码和电子邮件)和Scores(记录用户的积分)。在编码阶段,创建了一个名为LoginSolution的解决方案,...

    用spring+springMvc完成的一个简单的登陆实例

    最近在看spring3.x这本书,这是这本书随书附赠的例子,也是第一章的内容; 不过我把它的例子加上了jar包,并且给他的代码做了详细的注解; 希望对和我一样的spring新手有帮助; 采用Myeclipse编码,数据库的.sql...

    php实例完成登陆,数据库验证,文件上传,表操作等

    这个实例项目提供了一个基础的学习平台,适合初学者理解这些核心概念。以下是对这些知识点的详细解释: 1. **PHP 登录系统**: - 用户认证:登录系统的核心是验证用户输入的用户名和密码是否与数据库中存储的信息...

    验证码登陆小实例(二)项目源码

    总结来说,这个"验证码登陆小实例(二)项目源码"涵盖了JavaWeb开发的基本流程,包括HTTP请求响应、用户数据持久化(XML文件操作)、以及安全验证(验证码)。对于想要学习Web开发的同学,这是一个很好的实践项目,...

    asp验证码实例

    验证码的主要目标是确保只有人类用户能够完成特定的交互,通过让用户输入图片上显示的一串随机字符来实现这一目标。ASP验证码的实现通常涉及以下几个关键步骤: 1. **生成随机字符串**:验证码的核心是一段随机生成...

    ssh2整合实例(简单实现登陆)

    11. **关闭资源**:完成操作后,记得关闭通道和会话,`channel.disconnect();` 和 `session.disconnect();` 在提供的`ssh2_demo`示例中,可能包含了一个完整的Java程序,该程序演示了这些步骤,并且包含了所有必要...

    ORACLE 12C RAC 主库配置单实例ADG

    在开始配置 ORACLE 12C RAC 主库之前,需要完成以下准备工作: * 설치 ASM 环境 * 配置 Host IP 和 Net Service Name * 创建数据库和参数文件 2. 主库备份 在配置 ORACLE 12C RAC 主库之前,需要备份数据库、参数...

Global site tag (gtag.js) - Google Analytics