我刚刚在AS400 IBM i机器上设置了MediaWiki 1.29.0页面.我使用MariaDB作为数据库.我使用的是PHP 5.5.37
每次我尝试登录帐户时,都会收到错误消息:
您的登录会话似乎有问题; 此操作已被取消,作为防止会话劫持的预防措施.返回上一页,重新加载该页面,然后重试.
显然,我正在寻找的行为是登录.
我试过了:
$wgMainCacheType和$wgSessionCacheType对各种排列CACHE_NONE,CACHE_ACCEL,CACHE_DB,和CACHE_ANYTHING.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) 我运行的每个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) 我试图通过单击表头来对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更大}其他{比较正常})来装配我自己的比较逻辑,但这很麻烦,不会帮助我理解这个问题.
我在探索 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) 我正在使用遗留代码打开一个文件的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在最后关闭 …