小编Lor*_*aad的帖子

取消Mediawiki登录以防止会话劫持

我刚刚在AS400 IBM i机器上设置了MediaWiki 1.29.0页面.我使用MariaDB作为数据库.我使用的是PHP 5.5.37

每次我尝试登录帐户时,都会收到错误消息:

您的登录会话似乎有问题; 此操作已被取消,作为防止会话劫持的预防措施.返回上一页,重新加载该页面,然后重试.

显然,我正在寻找的行为是登录.

我试过了:

  • 改变$wgMainCacheType$wgSessionCacheType对各种排列CACHE_NONE,CACHE_ACCEL,CACHE_DB,和CACHE_ANYTHING.
  • 创建tmp目录并设置其权限.
  • 重建我的LocalSettings.php文件.
  • session.referer_check=off在php.ini中设置

我已经检查过,我知道我的cookie已启用(我可以调用document.cookie;并获取数据).

这个问题在之前已经被问到,并且内部存在相关问题,但没有解决方案解决了我的问题.他们还处理旧版本的WikiMedia,但我不知道这在这个例子中是否有所作为.

编辑:当我尝试创建一个新帐户时,我也会遇到相同的行为.但是,我能够导航wiki,创建页面和编辑页面而不会出现任何错误.

这是我的请求标题:

Cache-Control: private, must-revalidate, max-age=0
Connection: close
Content-language: en
Content-Type: text/html; charset=UTF-8
Date: Thu, 10 Aug 2017 13:48:36 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Link: </<path>/resources/assets/logo.png?88d75>;rel=preload;as=image
Server: Apache
Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
Set-Cookie: <wikiname>_session=n7gs0ct99ck5i2juq0togto9q7bfou6u; path=/; secure; httponly
Transfer-Encoding: chunked
Vary: Accept-Encoding,Cookie
X-Content-Type-Options: …
Run Code Online (Sandbox Code Playgroud)

php session mediawiki

12
推荐指数
1
解决办法
960
查看次数

JavaFX应用程序抛出NullPointerExceptions但仍然运行

我运行的每个JavaFX应用程序都抛出两个NullPointerExceptions.它们不会阻止甚至影响项目的执行,只有在调试模式下运行应用程序时才能看到它们.我甚至遇到了来自Oracle的HelloWorld示例和这个最小程序的问题:

public class JavaFXTSample extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {

        StackPane iAmRoot = new StackPane();

        Scene scene = new Scene(iAmRoot, 300, 250);

        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main (String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是第一个错误的堆栈跟踪:

 Thread [main] (Suspended (exception NullPointerException)) 
    SystemProperties.setVersions() line: 81 [local variables unavailable]   
    SystemProperties.lambda$static$28() line: 67    
    30621981.run() line: not available  
    AccessController.doPrivileged(PrivilegedAction<T>) line: not available [native method]  
    SystemProperties.<clinit>() line: 64    
    LauncherImpl.startToolkit() line: 668   
    LauncherImpl.launchApplicationWithArgs(String, String, String[]) line: 337  
    LauncherImpl.launchApplication(String, String, String[]) line: …
Run Code Online (Sandbox Code Playgroud)

java javafx nullpointerexception

9
推荐指数
1
解决办法
652
查看次数

无法在JavaScript中将输入文本转换为int

我试图通过单击表头来对HTML中的表进行排序.排序适用于字符串,但在比较数字时,它会计算"10"<"2".显然,我正在比较字符串,但我无法从表格单元格中获取数字.这是一个正在发生的事情的工作示例:

 <script type="text/javascript" >
      function sortBy() {
          var table = document.getElementById("table");
          var rows = table.getElementsByTagName("tr");
          var number = rows[1].getElementsByTagName("td")[0].innerHTML;
          document.write(number);  // This should be printing "7".
      }
 </script>

 <?php 
      echo "<table id='table'>
         <thead><tr><th onclick='sortBy()'>CLICK ME</th></thead></tr>
         <tbody><td><input readonly value='7'></td></tbody>";
 ?>
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我试图得到整数7.我已经尝试了parseInt(number),但是评估结果是NaN,所以我尝试编写的是什么number,它打印的是文本字段而不是文本字段的内容.我通过打印来检查这个number.length,然后我得到了29,而不是1.

我试过了,number.value但那是undefined.

我试着更换.innerHTML.value,但是这undefined太.

有什么方法可以将其转换为数字吗?或者至少剥离html标签等等?我意识到我可以使用字符串及其长度(如果(A.length> B.length){A更大}其他{比较正常})来装配我自己的比较逻辑,但这很麻烦,不会帮助我理解这个问题.

html javascript

5
推荐指数
1
解决办法
802
查看次数

增强的 for 循环背后发生了什么?

我在探索 Java 的增强 for 循环时编写了以下测试:

class test
{
    int number = 0;

    public static void main(String args[]) {
        new test();
    }

    public test() {

        int[] numbers = getNumbers();

        for(int number : numbers) {
            System.out.println("number    : " + number);
            System.out.println("numbers[0]: " + numbers[0]);

            numbers = getNumbers();
        }
    }

    public int[] getNumbers() {

        number++;

        int[] numbers = new int[5];

        for(int i = 0; i < numbers.length; i++)
            numbers[i] = number;

        return numbers;
    }
}
Run Code Online (Sandbox Code Playgroud)

我很惊讶地发现我的测试输出了:

number    : 1
numbers[0]: 1
number    : …
Run Code Online (Sandbox Code Playgroud)

java foreach

5
推荐指数
1
解决办法
637
查看次数

Streams可以通过他们返回的方法关闭吗?

我正在使用遗留代码打开一个文件的InputStream,我很好奇是否正确关闭了流.我们目前拥有的是一个方法,它返回一个由单独的方法调用的InputStream,该方法稍后将其关闭:

public void doThing(String path) throws Exception {

   InputStream is = getStream(path);

   try {
       ...   // Do some stuff
   } finally {
       if(is != null)
           is.close();
   }
}

public InputStream getStream(String path) throws Exception {

    InputStream is = new FileInputStream(new File(path));
    ...     // Do some stuff
    return is;
}
Run Code Online (Sandbox Code Playgroud)

但我不确定是否doThing()正确关闭InputStream的所有实例is.我理解在该doThing()方法中,InputStream的实例getStream()finally块返回,并由块正确关闭.那部分很清楚.

我不确定的是该getStream()方法是否会产生一个未正确关闭的InputStream的新实例.

也就是说,当getStream()返回时,被它返回一个引用原始对象is,或者是它返回一个新的实例is使用相同的价值呢?

如果它是前者,那么我相信该doThing()方法将关闭任何和所有Streams到文件.如果它是后者,那么我担心我可能创建了另一个从未明确关闭的流.相反,该对象将被垃圾收集器标记为删除,最终可能会或可能不会将其删除.我想避免这种情况.

是否所有实例都is在最后关闭 …

java resources stream

3
推荐指数
1
解决办法
57
查看次数