2011-11-17 90 views
1

消失这是我的代码:反斜杠从文件名

<script> 
document.getElementById(div').innerHTML = '<a href="javascript:void(0);" onclick="openPhpFile (\'asdasD\\Asdeqw.txt\');">efff</a>'; 
</script> 

openPhpFile功能运行时,我提醒文件名和\字符都不见了,即使它们是翻倍。 addslashes()没有帮助;它会是什么?

+2

凌晨必要看看功能openPhpFile和PHP文件来解决问题 – noob

回答

3

你应该这样做,而不是:

<script type='text/javascript'> 
    (function() { // Closures are your friend 
    // Declare variables 
    var theDiv, theLink; 
    // Create the link and assign attributes 
    theLink = document.createElement('a'); 
    theLink.innerHTML = 'efff'; 
    theLink.href = '#'; 
    theLink.onclick = function() { 
     openPhpFile('asdasD\\Asdeqw.txt'); 
    }; 
    // Get a reference to the container, empty the container and add the link 
    theDiv = document.getElementById('div'); 
    theDiv.innerHTML = ''; 
    theDiv.appendChild(theLink); 
    })(); 
</script> 

请记住,如果你是echo的荷兰国际集团从PHP双引号里面,你会真正需要反斜杠。这是因为PHP也会使用双反斜杠序列,并且只会输出一个。所以,如果你想PHP回声2反斜杠,你需要把4英寸

+0

哇,这是一个很大的代码。 :O –

+0

是的,但它是正确的做法。 – DaveRandom

+0

“href”应该是“#”之类的东西;没有理由成为“javascript:”伪造的URL。 – Pointy

1

如果你打开JS控制台,您将看到它被翻在地asdasD\Asdeqw.txt

因此,尝试添加另一斜杠。

'<a href="javascript:void(0);" onclick="openPhpFile (\'asdasD\\\Asdeqw.txt\');">efff</a>' 
1

你有没有尝试过把它们4而不是2或3为每个反斜杠?

1

只是想知道为什么你需要在这里的反斜杠?不要所有操作系统的支持(甚至更喜欢)正斜杠?也许我一直在Linux世界太久。

我只是使用正斜杠,至少对于你的双反斜杠(显然不是用于引号)。我有兴趣知道你在做什么,这意味着一个正斜杠不起作用。

+0

你是完全正确的,但可惜__FILE__使用反斜杠:) –

+0

_ _ FILE _ _ constant –

+0

典型的JS丑陋。 ......这就是我所要说的。 – SpiRail

2

尝试:

var div = document.getElementById("div"); 

div.innerHTML = '<a>efff</a>'; 

div.firstChild.onclick = function() { 
    openPhpFile('asdasD\\\\Asdeqw.txt'); 
}; 
+0

嗯,那好吧,如果文件名是在一个变种,我应该使用addslashes(addslashes()),所以两次? –

+0

+1,我喜欢这样。 a''没有'href'会不会导致页面重新加载? – DaveRandom

+0

@DaveRandom我还没有测试过,至少在Google Chrome中没有JohnSmith,你需要添加php代码,这样我们才能知道需要做什么。 – Esailija