在PHP文件上使用PDO后,Android共享首选项不起作用

时间:2019-05-05 09:05:14

标签: java php sharedpreferences

我正在创建一个Android应用,用户可以在其中使用registerlogin

目前注册和登录工作正常。

但是PHP代码容易受到SQL Injection攻击,因此我想使用PDO使其安全。

用户注册时,其NameSurname被保存在Shared Preferences中,并在其Home activity中显示。

问题在于,当我将Login脚本与PDO一起使用时,SharedPreferences中的变量是错误的。

如果我有10个users,即使我使用user 1user 2,{{1}登录,它也会显示user 3的名称和姓氏}等...

此外,如果我将user 4文件与Register.php一起使用,它不会为我保留PDO中所有用户的名字和姓氏。

所以我想了解为什么SharedPreferences文件更改后SharedPrefrences不起作用?

使用PHP的{​​{1}}文件有什么问题?

有人对我有什么建议吗?

我愿意听你的话。

没有PDO的Login.php

PHP

使用PDO的Login.php

PDO

没有PDP的Register.php

<?php

   if($_SERVER['REQUEST_METHOD']=='POST'){
  // echo $_SERVER["DOCUMENT_ROOT"];  // /home1/demonuts/public_html
//including the database connection file
       include_once("config2.php");

    $idAKr = $_POST['idAKr'];
    $cell = $_POST['cellulare'];

     if( $idAKr == '' || $cell == '' ){
            echo json_encode(array( "statusr" => "false","message" => "Inserisci numero di telefono!") );
     }else{
        $query= "SELECT * FROM Ristoratori WHERE cellulare='$cell'";
            $result= mysqli_query($con, $query);

            if(mysqli_num_rows($result) > 0){  
             $query= "SELECT * FROM Ristoratori WHERE cellulare='$cell'";
                         $result= mysqli_query($con, $query);
                     $emparray = array();
                         if(mysqli_num_rows($result) > 0){  
                         while ($row = mysqli_fetch_assoc($result)) {
                                     $emparray[] = $row;
                                   }
                         }
               echo json_encode(array( "statusr" => "truer","message" => "Accesso eseguito", "datar" => $emparray) );
            }else{ 
                echo json_encode(array( "statusr" => "false","message" => "Numero di telefono sbagliato!") );
            }
             mysqli_close($con);
     }
    } else{
            echo json_encode(array( "statusr" => "false","message" => "Errore, riprova!") );
    }
?>

使用PDO注册

<?php

   if($_SERVER['REQUEST_METHOD']=='POST'){
  // echo $_SERVER["DOCUMENT_ROOT"];  // /home1/demonuts/public_html
//including the database connection file
$output = array();

require_once('db.php');

    $idAKr = $_POST['idAKr'];
    $cell = $_POST['cellulare'];

     if( $idAKr == '' || $cell == '' ){
            echo json_encode(array( "statusr" => "false","message" => "Inserisci numero di telefono!") );
     }else{

         $conn=$dbh->prepare("SELECT * FROM Ristoratori WHERE cellulare=?");
         $conn->bindParam(1,$cell);
         $conn->execute();


            if($conn->rowCount() !==0){
             $query= "SELECT * FROM Ristoratori WHERE cellulare='$cell'";
                         $result= mysqli_query($con, $query);
                     $emparray = array();
                         if(mysqli_num_rows($result) > 0){  
                         while ($row = mysqli_fetch_assoc($result)) {
                                     $emparray[] = $row;
                                   }
                         }
               echo json_encode(array( "statusr" => "truer","message" => "Accesso eseguito", "datar" => $emparray) );
            }else{ 
                echo json_encode(array( "statusr" => "false","message" => "Numero di telefono sbagliato!") );
            }
     }
    } else{
            echo json_encode(array( "statusr" => "false","message" => "Errore, riprova!") );
    }
?>

Register.java

<?php


   if($_SERVER['REQUEST_METHOD']=='POST'){
  // echo $_SERVER["DOCUMENT_ROOT"];  // /home1/demonuts/public_html
//including the database connection file
       include_once("config2.php");

    $idAKr = $_POST['idAKr'];
    $cell = $_POST['cellulare'];
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $data = $_POST['data_nascita'];
    $sesso = $_POST['sesso'];
    $ristorante = $_POST['ristorante'];

   // $data_iscrizione = $_POST['data_iscrizione'];
  //  $data_scadenza = $_POST['data_scadenza'];
$data_iscrizione = date('Y/m/d');
$data_scadenza = date_create_from_format('Y/m/d', $data_iscrizione)->add(new DateInterval('P6M'))->format('Y/m/d');

    $fk_id_ristorante = $_POST['fk_id_ristorante'];

     if($nome == '' || $cognome == '' || $data == '' || $ristorante =='' ){
            echo json_encode(array( "statusr" => "false","message" => "Inserisci tutti i dati") );
     }else {

            $query= "SELECT * FROM Ristoratori WHERE ristorante='$ristorante'";
            $result= mysqli_query($con, $query);



            if(mysqli_num_rows($result) > 0){  
               echo json_encode(array( "statusr" => "false","message" => "Nome Ristorante già in uso") );
            }else{ 
             $query = "INSERT INTO Ristoratori (idAKr,cellulare,nome,cognome,data_nascita,sesso,ristorante,FK_id_ristorante) VALUES ('$idAKr','$cell','$nome','$cognome','$data','$sesso','$ristorante','$fk_id_ristorante')";


             if(mysqli_query($con,$query)){

                 $query= "SELECT * FROM Ristoratori WHERE nome='$nome' AND cognome='$cognome' AND data_nascita='$data' AND ristorante='$ristorante' ";
                         $result= mysqli_query($con, $query);
                     $emparray = array();
                         if(mysqli_num_rows($result) > 0){  
                         while ($row = mysqli_fetch_assoc($result)) {
                                     $emparray[] = $row;
                                   }
                         }

             echo json_encode(array( "statusr" => "truer","message" => "Registrazione completata!" , "datar" => $emparray) );
             }else{
                 echo json_encode(array( "statusr" => "false","message" => "Errore5") );
            }
            //prova

        }
                mysqli_close($con);
     }
     } else{
            echo json_encode(array( "statusr" => "false","message" => "Errore3") );
    }

 ?>

ParseContentRistoratore.java

<?php


   if($_SERVER['REQUEST_METHOD']=='POST'){
  // echo $_SERVER["DOCUMENT_ROOT"];  // /home1/demonuts/public_html
//including the database connection file
$output = array();


require_once('db.php');

    $idAKr = $_POST['idAKr'];
    $cell = $_POST['cellulare'];
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $data = $_POST['data_nascita'];
    $sesso = $_POST['sesso'];
    $ristorante = $_POST['ristorante'];

   // $data_iscrizione = $_POST['data_iscrizione'];
  //  $data_scadenza = $_POST['data_scadenza'];
$data_iscrizione = date('Y/m/d');
$data_scadenza = date_create_from_format('Y/m/d', $data_iscrizione)->add(new DateInterval('P6M'))->format('Y/m/d');

    $fk_id_ristorante = $_POST['fk_id_ristorante'];

     if($nome == '' || $cognome == '' || $data == '' || $ristorante =='' ){
            echo json_encode(array( "statusr" => "false","message" => "Inserisci tutti i dati") );
     }else {
         $conn=$dbh->prepare("SELECT ristorante FROM Ristoratori WHERE ristorante=?");
         $conn->bindParam(1,$ristorante);
         $conn->execute();




         if($conn->rowCount() !==0){
               echo json_encode(array( "statusr" => "false","message" => "Nome Ristorante già in uso") );
            }else{ 
                $conn=$dbh->prepare('INSERT INTO Ristoratori(idAKr,cellulare,nome,cognome,data_nascita,sesso,ristorante,FK_id_ristorante) VALUES (?,?,?,?,?,?,?,?)');
                //encrypting the password
                $conn->bindParam(1,$idAKr);
                $conn->bindParam(2,$cell);
                $conn->bindParam(3,$nome);
                $conn->bindParam(4,$cognome);
                $conn->bindParam(5,$data);
                $conn->bindParam(6,$sesso);
                $conn->bindParam(7,$ristorante);
                $conn->bindParam(8,$fk_id_ristorante);

                $conn->execute();

             if($conn->rowCount() !==0){

                 $query= "SELECT * FROM Ristoratori WHERE nome='$nome' AND cognome='$cognome' AND data_nascita='$data' AND ristorante='$ristorante' ";
                         $result= mysqli_query($conn, $query);
                     $emparray = array();
                         if(mysqli_num_rows($result) > 0){  
                         while ($row = mysqli_fetch_assoc($result)) {
                                     $emparray[] = $row;
                                   }
                         }

             echo json_encode(array( "statusr" => "truer","message" => "Registrazione completata!" , "datar" => $emparray) );
             }else{
                 echo json_encode(array( "statusr" => "false","message" => "Errore5") );
            }

        }

     }
     } else{
            echo json_encode(array( "statusr" => "false","message" => "Errore3") );
    }

 ?>

Login.java

  private void registerRistoratore() throws IOException, JSONException {

        if (!AndyUtilsRistoratore.isNetworkAvailableRistoratore(r_register.this)) {
            Toast.makeText(r_register.this, "Internet is required!", Toast.LENGTH_SHORT).show();
            return;
        }
        AndyUtilsRistoratore.showSimpleProgressDialogRistoratore(r_register.this);
        final HashMap<String, String> mapRistoratore = new HashMap<>();
        mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.IDRistoratore, etidAKr.getText().toString());
        mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.CELLRistoratore, etcellulare.getText().toString());
        mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.NOMERistoratore, etnome.getText().toString());
        mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.COGNOMERistoratore, etcognome.getText().toString());
        mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.DATARistoratore, etdata.getText().toString());
        mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.RISTORANTEmono, etristorante.getText().toString());

        mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.SESSORistoratore, ((RadioButton) findViewById(rGroup.getCheckedRadioButtonId())).getText().toString());

       // mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.DATAIscrizione, data_iscrizione.getText().toString());
     //   mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.DATAScadenza, data_scadenza.getText().toString());
        mapRistoratore.put(AndyConstantsRistoratore.ParamsRistoratore.FKIDRistorante, fk_id_ristorante.getText().toString());



        new AsyncTask<Void, Void, String>(){
            protected String doInBackground(Void[] paramsRistoratore) {
                String responseRistoratore="";
                try {
                    HttpRequestRistoratore reqRistoratore = new HttpRequestRistoratore(AndyConstantsRistoratore.ServiceTypeRistoratore.REGISTERRistoratore);
                    responseRistoratore = reqRistoratore.prepareRistoratore(HttpRequestRistoratore.Method.POST).withDataRistoratore(mapRistoratore).sendAndReadStringRistoratore();
                } catch (Exception eRistoratore) {
                    responseRistoratore=eRistoratore.getMessage();
                }
                return responseRistoratore;
            }
            protected void onPostExecute(String resultRistoratore) {
                //do something with response
                Log.d("newwwss", resultRistoratore);
                onTaskCompletedRistoratore(resultRistoratore, RegTaskRistoratore);
            }
        }.execute();
    }


    private void onTaskCompletedRistoratore(String responseRistoratore,int taskRistoratore) {
        Log.d("responsejson", responseRistoratore);
        AndyUtilsRistoratore.removeSimpleProgressDialogRistoratore();  //will remove progress dialog
        switch (taskRistoratore) {
            case RegTaskRistoratore:

                if (parseContentRistoratore.isSuccessRistoratore(responseRistoratore)) {

                    parseContentRistoratore.saveInfoRistoratore(responseRistoratore);
                    Toast.makeText(r_register.this, "Registrazione completata!", Toast.LENGTH_SHORT).show();
                    Intent intentRistoratore = new Intent(r_register.this,OnBoardingR.class);
                    intentRistoratore.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intentRistoratore);
                    this.finish();

                }else {
                    Toast.makeText(r_register.this, parseContentRistoratore.getErrorMessageRistoratore(responseRistoratore), Toast.LENGTH_SHORT).show();
                }
        }
    }

0 个答案:

没有答案