Java Cookie / Session - Проблема - phpmyadmin - PullRequest
0 голосов
/ 29 июня 2011

Привет, ребята, я хочу написать инструмент, который взаимодействует с phpmyadmin. Я хочу создать новую таблицу. Для этого мне нужны cookie и токен безопасности. Обе вещи я сделал. Моя проблема в том, что я возьму куки и открою новый URLConnection с этими куки. И возьмите токен для подтверждения моего запроса. Но каждый раз, когда я делаю это, я получаю ответ, что мой SQLQuery пуст, и если вы получаете эту ошибку, ваш токен недействителен. А неверный токен означает, что ваши куки не очень хорошо размещены в новом соединении, поэтому у вас нет той же сессии, что и раньше. Что я сделал не так, есть идеи, чтобы решить эту проблему?

Вот мой код: (он очень уродливый, но только для целей тестирования)

import java.io.*;
import java.net.*;
import java.util.List;

public class connect {

 public void connectto() throws IOException{
     URLConnection connection = new URL("http://localhost/phpmyadmin/index.php").openConnection();
     List<String> cookies = connection.getHeaderFields().get("Set-Cookie");
     connection.connect();
     InputStream response = connection.getInputStream();
     BufferedReader br = new BufferedReader(new InputStreamReader(response));
     String line;
     String token = "";
     while((line = br.readLine())!= null){
         System.out.println(line);
     if (line.contains("var token = ")){
         System.out.println("hit");
          token = "&token=" + line.substring(line.indexOf("var token = '") + "var token = '".length()).substring(0, line.substring(line.indexOf("var token = '") + "var token = '".length()).indexOf("';"));
     }

     }
     System.out.println(token);

     String url = URLEncoder.encode("db=mysql&sql_query=CREATE TABLE testtable(testtable TEXT);" + token, "UTF-8");


     connection = new URL("http://localhost/phpmyadmin/sql.php?" + url).openConnection();
     connection.setDoOutput(true);
     for (String cookie : cookies) {
         System.out.println(cookie.split(";", 2)[0]);
         connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
     }
     connection.connect();
     response = connection.getInputStream();
     br = new BufferedReader(new InputStreamReader(response));
     line = "";
     while((line = br.readLine())!= null){
     System.out.println(line);
     }

     }
 }

1 Ответ

0 голосов
/ 29 июня 2011

Приношу свои извинения, если я неправильно понял вашу проблему, но почему вы форсируете запрос через phpMyAdmin?Цель phpMyAdmin - предоставить пользователям интерфейс для работы с базой данных MySQL.Если вы хотите взаимодействовать с базой данных MySQL, вы должны открыть соединение непосредственно с базой данных и выполнить операторы в коде Java.Опять же, извините меня за незнание, если это невозможно для вас, но если вы должны работать через phpMyAdmin вместо прямого соединения между Java и вашей БД, пожалуйста, предоставьте больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...