2016-05-09 6 views
-1

user_idを取得するためにクエリを実行しようとしたところ、usernameに基づいてログインしています。 users.php ....SELECTクエリを使用して現在ログインしているユーザーIDを取得する

<?php 
session_start(); 
include_once 'error.php'; 

class User{ 

private $db; 
private $db_table = "users"; 

public function __construct() 
{ 
    $this->db = new DbConnect(); 
} 


public function isLoginExist($username, $password) 
{  

    $query = "select * from " . $this->db_table . " where username =  
'$username' AND password = '$password' Limit 1"; 
    $result = mysqli_query($this->db->getDb(), $query); 
    if(mysqli_num_rows($result) > 0){ 
     mysqli_close($this->db->getDb()); 
     return true; 
    }  
    mysqli_close($this->db->getDb()); 
    return false;  
} 

public function createNewRegisterUser($username, $password, $email) 
{ 

    $query = "insert into users (username, password, email, created_at, 
updated_at) values ('$username', '$password', '$email', NOW(), NOW())"; 
    $inserted = mysqli_query($this->db->getDb(), $query); 
    if($inserted == 1){ 
     $json['success'] = 1;         
    }else{ 
     $json['success'] = 0; 
    } 
    mysqli_close($this->db->getDb()); 
    return $json; 
} 



public function loginUsers($username, $password){ 

    $json = array(); 
    $canUserLogin = $this->isLoginExist($username, $password); 
    if($canUserLogin){ 
     $json['success'] = 1; 
    }else{ 
     $json['success'] = 0; 
    } 
    return $json; 
} 
} 


?> 

のindex.php

<?php 
session_start(); 
require_once 'users.php'; 

$username = ""; 
$password = ""; 
$email = ""; 



if(isset($_POST['username'])){ 
$username = $_POST['username']; 
} 
if(isset($_POST['password'])){ 
$password = $_POST['password']; 
} 
if(isset($_POST['email'])){ 
$email = $_POST['email']; 
} 

// Instance of a User class 
$userObject = new User(); 


// Registration of new user 
if(!empty($username) && !empty($password) && !empty($email)){ 
$hashed_password = md5($password); 
$json_registration = $userObject->createNewRegisterUser($username,  
$hashed_password, $email); 

echo json_encode($json_registration); 
} 


// User Login 
if(!empty($username) && !empty($password)) 
{ 
$hashed_password = md5($password); 


$json_array = $userObject->loginUsers($username, $hashed_password); 

session_start(); 

$_SESSION['username'] = $username; 

echo json_encode($json_array); 
} 
//var_dump($_SESSION['username']);displays current users name on android LOG 
?> 

topics.php

<?php 
session_start(); 
include_once 'error.php'; 


class Topic{ 

private $db; 
private $db_table = "topics"; 
private $db_table1 = "created_topics"; 



public function __construct() 
{ 
    $this->db = new DbConnect(); 
} 

public function createNewTopic($topic_name, $content) 
{ 
    session_start(); 
    include_once 'index.php'; 

    //query to get current logged in user_id 
    $un = "SELECT user_id FROM users WHERE username = " .  
    $_SESSION['username'] . " LIMIT 1"; 
    //running query 
    $unResults = mysqli_query($this->db->getDb(), $un); 

    //insert into db topic_name and content 
    $query = "INSERT INTO topics (topic_name, content, created_at, 
    updated_at) values ('$topic_name', '$content', NOW(), NOW())"; 

    $inserted = mysqli_query($this->db->getDb(), $query); 

    //query to insert into created_topics table with user_id and topic_id 
    $q = "insert into created_topics(user_id, topic_id,created_at) values 
    ('$unResults',LAST_INSERT_ID(),NOW())"; 

    mysqli_query($this->db->getDb(), $q); 

    if($inserted == 1){ 
     $json['success'] = 1;         
    }else{ 
     $json['success'] = 0; 
    } 

    mysqli_close($this->db->getDb()); 
    return $json; 

} 
} 
?> 

created_topic.php

<?php 
session_start(); 
require_once 'topics.php'; 

$topic_name = ""; 
$content = ""; 
$username = $_SESSION['username']; 


if(isset($_POST['topic_name'])) 
{ 
$topic_name = $_POST['topic_name']; 
} 
if(isset($_POST['content'])) 
{ 
$content = $_POST['content']; 
} 



// Instance of a Topic class 
$topicObject = new Topic(); 

// Registration of new topic 
if(!empty($topic_name) && !empty($content)) 
{ 

$json_registration = $topicObject->createNewTopic($topic_name, $content); 

echo json_encode($json_registration); 
} 

?> 

アンドロイドcreate_topicページ

を、私のトーストは、サーバー接続は失敗と言う:私は唯一get--価値をもたらし、私のアンドロイドログに今 user_id from users where username = '$username'; を取得するクエリを追加するまで
package com.example.mrbuknahsty.annovoteexdb; 

import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.params.BasicHttpParams; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List; 

public class createTopic extends AppCompatActivity 
{ 
protected EditText enteredTopicName,enteredContent; 

Button create; 

protected String topic_name; 

private final String serverUrl1 =  
"http://lkirkpatrick.btcwsd.com/anno/create_topic.php"; 



@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_create_topic); 

    enteredTopicName = (EditText) findViewById(R.id.topicNameET); 
    enteredContent = (EditText) findViewById(R.id.contentEdit); 

    create = (Button)findViewById(R.id.createBtn); 

    create.setOnClickListener(new View.OnClickListener() { 

     @Override 

     public void onClick(View v) { 

      topic_name = enteredTopicName.getText().toString(); 

      String content = enteredContent.getText().toString(); 

      if(topic_name.equals("") || content.equals("")){ 

       Toast.makeText(createTopic.this, "Topic Name or Content must  
      be filled", Toast.LENGTH_LONG).show(); 

       return; 

      } 

      if(topic_name.length() <= 1 || content.length() <= 1){ 

       Toast.makeText(createTopic.this, "Topic Name or Content  
     length must be greater than one", Toast.LENGTH_LONG).show(); 

       return; 

      } 

    // request authentication with remote server4 

      AsyncDataClass asyncRequestObject = new AsyncDataClass(); 

      asyncRequestObject.execute(serverUrl1, topic_name, content); 

     } 

    }); 
} 

private class AsyncDataClass extends AsyncTask<String, Void, String> { 

    @Override 

    protected String doInBackground(String... params) { 

     HttpParams httpParameters = new BasicHttpParams(); 

     HttpConnectionParams.setConnectionTimeout(httpParameters, 5000); 

     HttpConnectionParams.setSoTimeout(httpParameters, 5000); 

     HttpClient httpClient = new DefaultHttpClient(httpParameters); 

     HttpPost httpPost = new HttpPost(params[0]); 

     String jsonResult = ""; 

     try { 

      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair> 
      (2); 

      nameValuePairs.add(new BasicNameValuePair("topic_name", 
      params[1])); 

      nameValuePairs.add(new BasicNameValuePair("content", params[2])); 

      nameValuePairs.add(new BasicNameValuePair("content", params[2])); 

      httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

      HttpResponse response = httpClient.execute(httpPost); 

      jsonResult =  
    inputStreamToString(response.getEntity().getContent()).toString(); 

     } catch (ClientProtocolException e) { 

      e.printStackTrace(); 

     } catch (IOException e) { 

      e.printStackTrace(); 

     } 

     return jsonResult; 

    } 

    @Override 

    protected void onPreExecute() { 

     super.onPreExecute(); 

    } 

    @Override 

    protected void onPostExecute(String result) { 

     super.onPostExecute(result); 

     System.out.println("Resulted Value: " + result); 

     if(result.equals("") || result == null){ 

      Toast.makeText(createTopic.this, "Server connection failed", 
     Toast.LENGTH_LONG).show(); 

      return; 

     } 

     int jsonResult = returnParsedJsonObject(result); 

     if(jsonResult == 0){ 

      Toast.makeText(createTopic.this, "Something Went Wrong", 
     Toast.LENGTH_LONG).show();   

      return; 

     } 

     if(jsonResult == 1){ 

      Intent intent = new Intent(createTopic.this, login.class); 

      intent.putExtra("USERNAME", topic_name); 

      intent.putExtra("MESSAGE", "Topic successfully created!"); 

      startActivity(intent); 

     } 

    } 

    private StringBuilder inputStreamToString(InputStream is) { 

     String rLine = ""; 

     StringBuilder answer = new StringBuilder(); 

     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

     try { 

      while ((rLine = br.readLine()) != null) { 

       answer.append(rLine); 

      } 

     } catch (IOException e) { 

// TODO Auto-generated catch block 

      e.printStackTrace(); 

     } 

     return answer; 

    } 

} 

private int returnParsedJsonObject(String result){ 

    JSONObject resultObject = null; 

    int returnedResult = 0; 

    try { 

     resultObject = new JSONObject(result); 

     returnedResult = resultObject.getInt("success"); 

    } catch (JSONException e) { 

     e.printStackTrace(); 

    } 

    return returnedResult; 

} 

} 

すべてが細かい走りました。どんな助けも素晴らしいだろう。

おかげ

+0

問題を解決するには、ここで受諾された回答の関連部分を読む必要があります。http://stackoverflow.com/questions/60174/how-can-i-prevent-sql- injection-in-php –

+0

私の質問にどのように関係しているのかよくわからないが、私はちょうど私のセッション変数を失うことから私を助ける方法については明確ではないヘルプIMをappriciate ???ログイン後に私の変数(ユーザ名)が返ってくるのを見ましたが、別のPHPファイルの別のクエリでそれを使うと、私のDBには常に0が返されます。実際にはそれをより難しくしているNOエラーを取得しています – luke

+0

これは、あなたが適切にクエリを実行するのに役立ちます。現時点でSQLを実行する方法は間違っています。これはエラーの原因です。 –

答えて

0

あなたはおよそscopes in programmingをお読みください。

createNewTopicの機能とtopics.phpで定義されている変数を確認してください。 )

+0

session_start(); \t $ findUser = $ _SESSION ['username']; \t \t //現在ログインしているクエリuser_id \t \t $ un = "SELECT user_id FROM users WHERE username = '$ findUser' LIMIT 1;私は_SESSION ['username'] = $ usernameをindex.phpに追加しましたが、まだ運がありません。私はこれで2週間以上続いていますが、このユーザー名を取得することはできません。助けてください – luke

+0

私が探しているか、やっているべきかわからないIm ....ここにnoobの合計。 – luke

+0

コードの一部を投稿するのを忘れた場合、またはコード内のロジックの基本的な概念が不足している場合は、言うことは難しいです。 – pocketrocket

関連する問題