简体   繁体   中英

Strange Behaviour in PHP script

I am in a problem can any one help me please.

I have a php file which i am calling from my java class file's Asynctask. In the Asynctask i am sending three variables email,password and pin.

What is happening, is that when i run my php with hardcoded values it gives me proper result.

RESULT IS:

Inside 1st if 
Inside 2nd if 
Verified 
main if

But wen i try running my php through the code it gives me wrong result

RESULT IS:

Inside 1st if 
Invalid
main if

I'am not able to understand why is this happening please Guide me.

My PHP File

<?php

require 'DbConnect.php';

    $i=1;
    $Password = $_POST["password"];
    $Email = $_POST["email"];
    $Pin = $_POST["pin"];
    //$KeyCode = $_REQUEST["key"];


        if((isset($_POST["password"])) && (isset($_POST["email"])) && (isset($_POST["pin"])))
        {
            $query4 = ("SELECT seller_id, name, email, password, verification_Pin, verification_Code, created_Date  FROM `seller` WHERE email = '$Email'");
            $query_run = mysql_query($query4);
            $row=mysql_fetch_row($query_run);

            $int=$row[0];
            $strName=$row[1];
            $strEmail=$row[2];
            $strPwd=$row[3];                
            $strPin=$row[4];

            echo $Pin;
            echo $Password;
            echo $Email;
            echo $int;
            echo $strEmail;
            echo $strPwd;
            echo $strPin;




            if(($Email==$strEmail) && ($Password==$strPwd) && ($Pin==$strPin))
            {
                global $i;
                $i=2;
                $id=updateValidation($int);
                echo $id;
                if($id==1)
                {
                    echo "Verified";
                }
                else
                {
                    echo "Not Verified";
                }
            }
            else
            {
                echo "Invaild";
            }
        }
        else
        {
            echo "Values not set";
        }



function updateValidation($sid)
{
    global $i;
    if($i==2)
    {
        echo "Inside Update vAlidation";
        $queryUpdate = ("UPDATE `seller` SET verification_Pin = 0, verification_Code = 'Verified', created_Date = CURDATE() where seller_id='$sid'");

        if(mysql_query($queryUpdate))
        {
            return 1; 
        }
        else
        {
            return 2; 
        }
    }
    else
    {
        echo "i not 2";
    }
}

?>

My Class file:

Button ok = (Button) myDialog
                            .findViewById(R.id.button1);
                    et_pin = (EditText) myDialog
                            .findViewById(R.id.editText1);
                    ok.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                            Toast.makeText(getApplicationContext(),
                                    "CLICKED OK", Toast.LENGTH_LONG).show();
                            pin = et_pin.getText().toString();
                            Toast.makeText(
                                    getApplicationContext(),
                                    "email,pass,pin= " + str1 + "," + str2
                                            + "," + pin, Toast.LENGTH_LONG)
                                    .show();
                            new App_pin_Task().execute(FILENAME_pin);
                            // Intent intent = new
                            // Intent(Dealer_details.this,
                            // Login.class);
                            // startActivity(intent);
                        }
                    });

public class App_pin_Task extends AsyncTask<String, Integer, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

    }

    @SuppressLint("NewApi")
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        Toast.makeText(getApplicationContext(),
                "Inside App_pin_Task post Execute(Result)=" + result,
                Toast.LENGTH_LONG).show();

        if (result.contains("Invalid")) {
            et_pin.setText("");
        } else {
            Intent myIntent = new Intent(Login.this, UserActivity.class);
            startActivity(myIntent);
        }

    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);
    }

    @Override
    protected String doInBackground(String... params) {
        // String is = null;

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(
                "http://animsinc.com/verifyEmail.php");
        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                    4);
            nameValuePairs.add(new BasicNameValuePair("email", str1));
            nameValuePairs.add(new BasicNameValuePair("password", str2));
            nameValuePairs.add(new BasicNameValuePair("pin", pin));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            httpclient.execute(httppost);

            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = EntityUtils.toString(entity);

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }

        return is;
    }

}

What is being returned with

$Password = $_REQUEST["password"];
$Email = $_REQUEST["email"];
$Pin = $_REQUEST["pin"];
$KeyCode = $_REQUEST["key"];

Your server configuration may have this option disabled and not returning anything.

You shouldn't use $_REQUEST anyway because you can never be sure where the data is actually coming from: $_POST, $_GET or $_cookie.

try this!

Change this

$Password = $_REQUEST["password"];
$Email = $_REQUEST["email"];
$Pin = $_REQUEST["pin"];
$KeyCode = $_REQUEST["key"];

to for Get Request

$Password = $_GET["password"];
$Email = $_GET["email"];
$Pin = $_GET["pin"];
$KeyCode = $_GET["key"];

or for Post Request

$Password = $_POST["password"];
$Email = $_POST["email"];
$Pin = $_POST["pin"];
$KeyCode = $_POST["key"]; 

or

"SELECT seller_id, name, email, password, verification_Pin,
verification_Code, created_Date  FROM seller WHERE email = '".$Email."'"

Complementing the answer from fayeq-ali-khan I would also do the following;

First use post and add html special character for security.

htmlspecialchars => Convert special characters to HTML entities

$Password = htmlspecialchars($_POST['password'],ENT_QUOTES);
$Email = htmlspecialchars($_POST['email'],ENT_QUOTES);
$Pin = htmlspecialchars($_POST['pin'],ENT_QUOTES);        
$KeyCode = htmlspecialchars($_POST['key'],ENT_QUOTES);

Also on your android activity and before you send the string it would be a good idea to trim the value to make sure that you are not transmitting empty character that can also mess up with the PHP

nameValuePairs.add(new BasicNameValuePair("email", str1.trim()));
nameValuePairs.add(new BasicNameValuePair("password", str2.trim()));
nameValuePairs.add(new BasicNameValuePair("pin", pin.trim()));

I hope it help you with something

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM