【问题标题】:Java Cookie/Session - Problem - phpmyadminJava Cookie/会话 - 问题 - phpmyadmin
【发布时间】:2011-06-29 23:05:45
【问题描述】:

大家好,我想编写一个与 phpmyadmin 交互的工具。我想创建一个新表。为此,我需要 cookie 和安全令牌。这两件事我都做过。我的问题是我将获取 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);
     }

     }
 }

【问题讨论】:

  • 你试过 Apache HttpClient 吗?它会为你处理所有这些事情。
  • 是的,我已经尝试过 httpclient,但在这种情况下它没有用,通常它会收到一些 cookie 被拒绝的错误。我正在使用选项 BROWSER.COMPATIBLITY 所以我想在没有 httpclient 的情况下尝试它。 :)

标签: java session cookies phpmyadmin token


【解决方案1】:

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

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

【讨论】:

  • 好吧,我想通过 phpmyadmin 执行此操作,以在 webapps Cookie-Handling 和 Sessions 方面熟练掌握。因此,如果我想编写其他一些使用 http 连接的应用程序并且我不会使用 apache http 客户端来解决这个问题,我会尽可能多地收集知识以帮助我。
  • 好吧,那是有道理的。我很抱歉,但我对这个问题无能为力。我只是发现您正在通过 phpMyAdmin 获取可以在 Java 代码中执行的 MySQL 函数,这很可疑。祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
相关资源
最近更新 更多