Java Cookie / Session - 问题 - phpmyadmin

时间:2011-06-29 14:59:36

标签: java session cookies phpmyadmin token

大家好我想编写一个与phpmyadmin交互的工具。我想创建一个新表。为此,我需要cookie和安全令牌。我做过的两件事。我的问题是我会带上这些饼干并用这些Cookie打开一个新的URLConnection。并获取令牌以验证我的请求。但每次我这样做,我得到了我的SQLQuery为空的响应,如果你得到这个错误你的令牌是无效的。并且无效的令牌意味着您的cookie未在新连接中放置得非常好,因此您没有与以前相同的会话。我做错了什么,有什么想法来解决这个问题吗?

这是我的代码:(非常难看,但仅用于测试目的)

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 :(得分:0)

如果我误解了你的问题,我为此道歉,但你为什么要通过phpMyAdmin强制请求呢? phpMyAdmin的目的是为人们提供一个使用MySQL数据库的UI。如果要与MySQL数据库进行交互,则应该直接打开与数据库的连接并在java代码中执行语句。

再次请原谅我的无知,如果这对你来说是不可行的,但如果你必须通过phpMyAdmin工作而不是Java和你的数据库之间的直接连接,请提供更多信息。