2012-11-24 1 views
3
<?php 
    $cdata = $_GET['cdata']; 
    $cfile = "./output/$ip/output.css"; 
    $cout = fopen($cfile, 'w') or die("1"); 
    fwrite($cout, $cdata) or die("Could not write to " . $cfile); 
    echo("Wrote CSS to " . $cfile . " successfully.<br />"); 
    fclose($cout); 
?> 

웹 서버에서이 작업을 실행하면 성공했음을 알 수 있습니다. 그러나 오류가 발생하지는 않았지만 원하는 부분을 씁니다. 여기에 내가 ($_GET['cdata']로 URL을 통해 전달)가 작성하는 말할 내용은 다음과 같습니다PHP로 파일에 CSS 스타일 시트를 쓸 수없는 이유는 무엇입니까?

body{background: #000; color: #FFF;} 

을 그리고 이것은 내가 끝 부분에 공간이있는 파일

body{background: 

참고로 돌아갈 것입니다, 그래서 나는 파운드 (#)가 문제를 일으킨다 고 추측하고 있지만 왜 또는 어떻게 고쳐야할지 모른다.

이것은 내 코드, 스 니펫 전체가 아니며 오류가있는 부분입니다. 나는 이것이 충분한 정보가되기를 바랍니다. 부탁하지 않는다면 나는 거기에 무엇이든 던지려고 노력할 것입니다. 미리 감사드립니다.

솔루션

내가 데이터를 전송하는 jQuery의 $ .post() 메소드를 사용하여 이후, 내가 할하는 데 필요한 모든이에 encodeURIComponent()로 전송되는 데이터를 포장했다, 그리고이 일을 한 것 같다 장난. 거기에 올바른 방향으로 나를 가리켜 주셔서 감사합니다 @ xbonez.

+1

값의 공백으로 인해. 그래서 당신은 망가진 결과를 얻고 있습니다. – Basith

+0

나는 그것에 대해 궁금해하고 있었다. ""을 " "으로 바꿀 수 있다고 생각하십니까? EDIT - HTML이 아닌 CSS에 들어갑니다. – OffLuffy

답변

4

url 속성을 인코딩해야합니다. url의 #은 해시로 처리되고 서버로 보내지 않습니다. 예 :

var args = 'cdata='+encodeURIComponent('body{background: #000; color: #FFF;}'); 
+0

나는 그것에 대해 생각해 보았고 실제로 url 인코딩을 사용하고 있지만 PHP.net에서는 $ _GET [ ''] 변수를 사용할 때 urldecode()가 자동으로 수행된다는 것을 언급합니다. – OffLuffy

+1

# 기호가 서버 측으로 전송되지 않은 후에는 아무 것도 표시되지 않습니다. 그래서'urldecode()'가 자동으로 수행 되더라도, 서버는 첫 번째 #를 넘어서 아무것도 수신하지 못합니다. 'urlencode()'도 꼭 만들어야합니다. – xbonez

+0

고마워, 나는 그것을 빨리 시험해볼 것이다 - 사실, 자바 스크립트/jquery로 이것을 할 수있는 방법이 있습니까? jquery의 $ .post() 메서드를 사용하여 데이터를 보냅니다. – OffLuffy

0

요청은 URL로부터 값을 가져옵니다. Base64로 URL을 인코딩하거나 대신 Post 변수를 사용할 수 있습니다. 예 : 숨겨진 입력 양식 유형.