emopoops Posted November 23, 2009 Share Posted November 23, 2009 i want to copy the string to a clipboard, this is a php question because everytime i do $string = highlight_string(); it equals one not the string plus it echos the highlighed string on the page or sometghing. i am working on this page http://socialemo.com/boo/ and i have to be able to copy to the clipboard the "dangerous" string that has been visible and not executed by the function highlight_string() heres my code: what do i do? <?php highlight_string('<?php phpinfo(); ?><style> body{background:black;color:pink} </style>'); ?> Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/ Share on other sites More sharing options...
premiso Posted November 23, 2009 Share Posted November 23, 2009 To highlight the string you have to copy it to a variable: <?php $string = highlight_string('<?php phpinfo(); ?><style> body{background:black;color:pink} </style>'); ?> To Copy it to the clipboard you will need JavaScript to do so, as PHP is server side it has no control what is copied to the client's clipboard. Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963602 Share on other sites More sharing options...
emopoops Posted November 23, 2009 Author Share Posted November 23, 2009 no u dont understand. this is a php thing because when i echo the variable that u just put(whcih oove done) it doesnt stay as a value it just echos it. i had to echo it into a hidden input, it messed up everything it doesnt work. it shows it instead of being hidden. its like aphp override Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963605 Share on other sites More sharing options...
premiso Posted November 23, 2009 Share Posted November 23, 2009 Well, my bet is that the html is parsing the < > and thinking that is actual html code. <?php $string = highlight_string('<?php phpinfo(); ?><style> body{background:black;color:pink} </style>', true); $string = htmlentities($string); ?> <textarea><?php echo $string; ?></textarea> That should be what you are looking for: htmlentities Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963611 Share on other sites More sharing options...
emopoops Posted November 23, 2009 Author Share Posted November 23, 2009 ok thanks for the true part it makes it not show up when i define the variable. but when it does show up its not just "1" which is good, but well its not good because well this is what it looks like: <code><span style="color: #000000"> <span style="color: #0000BB"><?php phpinfo</span><span style="color: #007700">(); </span><span style="color: #0000BB">?></span><style><br />body{background:black;color:pink}<br /></style></span> </code> i dont think any one wants to copy that and work it out. Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963614 Share on other sites More sharing options...
premiso Posted November 23, 2009 Share Posted November 23, 2009 Interesting, well if it does not have to be put into an input or text area here is one option of doing it: <?php $string = highlight_string('<?php phpinfo(); ?><style> body{background:black;color:pink} </style>', true); //$string = htmlentities($string); ?> <SPAN ID="copytext" STYLE="height:150;width:162;background-color:pink"> <?php echo $string; ?> </SPAN> <TEXTAREA ID="holdtext" STYLE="display:none;"> </TEXTAREA> <BUTTON onClick="ClipBoard();">Copy to Clipboard</BUTTON> <script type="text/javascript"> function ClipBoard() { var text = copytext.innerHTML; text = decoded = Encoder.htmlDecode(text.toString()); holdtext.innerText = text; Copied = holdtext.createTextRange(); Copied.execCommand("RemoveFormat"); Copied.execCommand("Copy"); } Encoder = { // When encoding do we convert characters into html or numerical entities EncodeType : "entity", // entity OR numerical isEmpty : function(val){ if(val){ return ((val===null) || val.length==0 || /^\s+$/.test(val)); }else{ return true; } }, // Convert HTML entities into numerical entities HTML2Numerical : function(s){ var arr1 = new Array(' ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','à','á','â','ã','Ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','Ö','×','ø','ù','ú','û','Ü','ý','þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ','"','&','<','>','œ','œ','š','š','ÿ','ˆ','˜',' ',' ',' ','','','','','–','—','‘','’','‚','“','”','„','†','†','‰','‹','›','€','ƒ','α','β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ','σ','τ','υ','φ','χ','ψ','ω','α','β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ','ς','σ','τ','υ','φ','χ','ψ','ω','ϑ','ϒ','ϖ','•','…','′','′','‾','⁄','℘','ℑ','ℜ','™','ℵ','←','↑','→','↓','↔','↵','←','↑','→','↓','↔','∀','∂','∃','∅','∇','∈','∉','∋','∏','∑','−','∗','√','∝','∞','∠','∧','∨','∩','∪','∫','∴','∼','≅','≈','≠','≡','≤','≥','⊂','⊃','⊄','⊆','⊇','⊕','⊗','⊥','⋅','⌈','⌉','⌊','⌋','〈','〉','◊','♠','♣','♥','♦'); var arr2 = new Array(' ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ','"','&','<','>','Œ','œ','Š','š','Ÿ','ˆ','˜',' ',' ',' ','','','','','–','—','‘','’','‚','“','”','„','†','‡','‰','‹','›','€','ƒ','Α','Β','Γ','Δ','Ε','Ζ','Η','Θ','Ι','Κ','Λ','Μ','Ν','Ξ','Ο','Π','Ρ','Σ','Τ','Υ','Φ','Χ','Ψ','Ω','α','β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ','ς','σ','τ','υ','φ','χ','ψ','ω','ϑ','ϒ','ϖ','•','…','′','″','‾','⁄','℘','ℑ','ℜ','™','ℵ','←','↑','→','↓','↔','↵','⇐','⇑','⇒','⇓','⇔','∀','∂','∃','∅','∇','∈','∉','∋','∏','∑','−','∗','√','∝','∞','∠','∧','∨','∩','∪','∫','∴','∼','≅','≈','≠','≡','≤','≥','⊂','⊃','⊄','⊆','⊇','⊕','⊗','⊥','⋅','⌈','⌉','⌊','⌋','〈','〉','◊','♠','♣','♥','♦'); return this.swapArrayVals(s,arr1,arr2); }, // Convert Numerical entities into HTML entities NumericalToHTML : function(s){ var arr1 = new Array(' ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ','"','&','<','>','Œ','œ','Š','š','Ÿ','ˆ','˜',' ',' ',' ','','','','','–','—','‘','’','‚','“','”','„','†','‡','‰','‹','›','€','ƒ','Α','Β','Γ','Δ','Ε','Ζ','Η','Θ','Ι','Κ','Λ','Μ','Ν','Ξ','Ο','Π','Ρ','Σ','Τ','Υ','Φ','Χ','Ψ','Ω','α','β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ','ς','σ','τ','υ','φ','χ','ψ','ω','ϑ','ϒ','ϖ','•','…','′','″','‾','⁄','℘','ℑ','ℜ','™','ℵ','←','↑','→','↓','↔','↵','⇐','⇑','⇒','⇓','⇔','∀','∂','∃','∅','∇','∈','∉','∋','∏','∑','−','∗','√','∝','∞','∠','∧','∨','∩','∪','∫','∴','∼','≅','≈','≠','≡','≤','≥','⊂','⊃','⊄','⊆','⊇','⊕','⊗','⊥','⋅','⌈','⌉','⌊','⌋','〈','〉','◊','♠','♣','♥','♦'); var arr2 = new Array(' ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','à','á','â','ã','Ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','Ö','×','ø','ù','ú','û','Ü','ý','þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ','"','&','<','>','œ','œ','š','š','ÿ','ˆ','˜',' ',' ',' ','','','','','–','—','‘','’','‚','“','”','„','†','†','‰','‹','›','€','ƒ','α','β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ','σ','τ','υ','φ','χ','ψ','ω','α','β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ','ς','σ','τ','υ','φ','χ','ψ','ω','ϑ','ϒ','ϖ','•','…','′','′','‾','⁄','℘','ℑ','ℜ','™','ℵ','←','↑','→','↓','↔','↵','←','↑','→','↓','↔','∀','∂','∃','∅','∇','∈','∉','∋','∏','∑','−','∗','√','∝','∞','∠','∧','∨','∩','∪','∫','∴','∼','≅','≈','≠','≡','≤','≥','⊂','⊃','⊄','⊆','⊇','⊕','⊗','⊥','⋅','⌈','⌉','⌊','⌋','〈','〉','◊','♠','♣','♥','♦'); return this.swapArrayVals(s,arr1,arr2); }, // Numerically encodes all unicode characters numEncode : function(s){ if(this.isEmpty(s)) return ""; var e = ""; for (var i = 0; i < s.length; i++) { var c = s.charAt(i); if (c < " " || c > "~") { c = "&#" + c.charCodeAt() + ";"; } e += c; } return e; }, // HTML Decode numerical and HTML entities back to original values htmlDecode : function(s){ var c,m,d = s; if(this.isEmpty(d)) return ""; // convert HTML entites back to numerical entites first d = this.HTML2Numerical(d); // look for numerical entities " arr=d.match(/&#[0-9]{1,5};/g); // if no matches found in string then skip if(arr!=null){ for(var x=0;x<arr.length;x++){ m = arr[x]; c = m.substring(2,m.length-1); //get numeric part which is refernce to unicode character // if its a valid number we can decode if(c >= -32768 && c <= 65535){ // decode every single match within string d = d.replace(m, String.fromCharCode(c)); }else{ d = d.replace(m, ""); //invalid so replace with nada } } } return d; }, // encode an input string into either numerical or HTML entities htmlEncode : function(s,dbl){ if(this.isEmpty(s)) return ""; // do we allow double encoding? E.g will & be turned into & dbl = dbl | false; //default to prevent double encoding // if allowing double encoding we do ampersands first if(dbl){ if(this.EncodeType=="numerical"){ s = s.replace(/&/g, "&"); }else{ s = s.replace(/&/g, "&"); } } // convert the xss chars to numerical entities ' " < > s = this.XSSEncode(s,false); if(this.EncodeType=="numerical" || !dbl){ // Now call function that will convert any HTML entities to numerical codes s = this.HTML2Numerical(s); } // Now encode all chars above 127 e.g unicode s = this.numEncode(s); // now we know anything that needs to be encoded has been converted to numerical entities we // can encode any ampersands & that are not part of encoded entities // to handle the fact that I need to do a negative check and handle multiple ampersands &&& // I am going to use a placeholder // if we don't want double encoded entities we ignore the & in existing entities if(!dbl){ s = s.replace(/&#/g,"##AMPHASH##"); if(this.EncodeType=="numerical"){ s = s.replace(/&/g, "&"); }else{ s = s.replace(/&/g, "&"); } s = s.replace(/##AMPHASH##/g,"&#"); } // replace any malformed entities s = s.replace(/&#\d*([^\d;]|$)/g, "$1"); if(!dbl){ // safety check to correct any double encoded & s = this.correctEncoding(s); } // now do we need to convert our numerical encoded string into entities if(this.EncodeType=="entity"){ s = this.NumericalToHTML(s); } return s; }, // Encodes the basic 4 characters used to malform HTML in XSS hacks XSSEncode : function(s,en){ if(!this.isEmpty(s)){ en = en || true; // do we convert to numerical or html entity? if(en){ s = s.replace(/\'/g,"'"); //no HTML equivalent as &apos is not cross browser supported s = s.replace(/\"/g,"""); s = s.replace(/</g,"<"); s = s.replace(/>/g,">"); }else{ s = s.replace(/\'/g,"'"); //no HTML equivalent as &apos is not cross browser supported s = s.replace(/\"/g,"""); s = s.replace(/</g,"<"); s = s.replace(/>/g,">"); } return s; }else{ return ""; } }, // returns true if a string contains html or numerical encoded entities hasEncoded : function(s){ if(/&#[0-9]{1,5};/g.test(s)){ return true; }else if(/&[A-Z]{2,6};/gi.test(s)){ return true; }else{ return false; } }, // will remove any unicode characters stripUnicode : function(s){ return s.replace(/[^\x20-\x7E]/g,""); }, // corrects any double encoded & entities e.g & correctEncoding : function(s){ return s.replace(/(&)(amp;)+/,"$1"); }, // Function to loop through an array swaping each item with the value from another array e.g swap HTML entities with Numericals swapArrayVals : function(s,arr1,arr2){ if(this.isEmpty(s)) return ""; var re; if(arr1 && arr2){ //ShowDebug("in swapArrayVals arr1.length = " + arr1.length + " arr2.length = " + arr2.length) // array lengths must match if(arr1.length == arr2.length){ for(var x=0,i=arr1.length;x<i;x++){ re = new RegExp(arr1[x], 'g'); s = s.replace(re,arr2[x]); //swap arr1 item with matching item from arr2 } } } return s; }, inArray : function( item, arr ) { for ( var i = 0, x = arr.length; i < x; i++ ){ if ( arr[i] === item ){ return i; } } return -1; } } </script> Notice I added an htmlEncode/Decode class which I found here: http://www.strictly-software.com/htmlencode Seems to work fine on my end. If you want what is being copied to be hidden, simple set the <span style="display:none;"> Hope that helps a bit EDIT: On a side note, if you wanted to use the php's htmlentities to put it into a textarea etc, the following would work: <?php $string = highlight_string('<?php phpinfo(); ?><style> body{background:black;color:pink} </style>', true); $string = htmlentities($string); ?> <SPAN ID="copytext" STYLE="height:150;width:162;background-color:pink"> <?php echo $string; ?> </SPAN> <TEXTAREA ID="holdtext" STYLE="display:none;"> </TEXTAREA> <BUTTON onClick="ClipBoard();">Copy to Clipboard</BUTTON> <script type="text/javascript"> function ClipBoard() { var text = copytext.innerHTML; text = decoded = Encoder.htmlDecode(Encoder.htmlDecode(text.toString())); holdtext.innerText = text; Copied = holdtext.createTextRange(); Copied.execCommand("RemoveFormat"); Copied.execCommand("Copy"); } (For space sake I removed the htmlencode/decode functions, they will be needed for that to work). What I changed was basically in the copy clipboard javascript I decoded the innerText twice, which seemed to work. Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963621 Share on other sites More sharing options...
emopoops Posted November 23, 2009 Author Share Posted November 23, 2009 thanks but isnt there a easier way for it to work? that is LENGTHY Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963632 Share on other sites More sharing options...
premiso Posted November 23, 2009 Share Posted November 23, 2009 thanks but isnt there a easier way for it to work? that is LENGTHY You can find a smaller way to mimic PHP's htmlentities_decode that will work just fine. But you have to decode the string in order for it to copy correctly, unfortunately. Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963635 Share on other sites More sharing options...
emopoops Posted November 23, 2009 Author Share Posted November 23, 2009 i have to do this for a lot of things on one page because im doing like php specimens. is there a way to make it for the id it is(the onclick) cause i dont have to hide it i have to show it. so i only need the text once not twice. like isthere some onclick thing that would make the span id th id i click on or something rather than just 1 set id because i have a hwole bunch im going tobe doing like 10+ per page Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963647 Share on other sites More sharing options...
premiso Posted November 23, 2009 Share Posted November 23, 2009 i have to do this for a lot of things on one page because im doing like php specimens. is there a way to make it for the id it is(the onclick) cause i dont have to hide it i have to show it. so i only need the text once not twice. like isthere some onclick thing that would make the span id th id i click on or something rather than just 1 set id because i have a hwole bunch im going tobe doing like 10+ per page Honestly, I would mosey on over to the Javascript forum and ask the new question of what you would want to do, as it has turned into a javascript problem and they will probably know more than I would Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963651 Share on other sites More sharing options...
emopoops Posted November 23, 2009 Author Share Posted November 23, 2009 well ever since i put that huge long script in my webpage(i had to save it as unicode to save it) ive been having outputs that look like this: 扲㹮潷Ⱐ桯眠瑨楳⁷潲歳猠獩浰汥㨠਼扲㹹潵桯潳攠愠獰散業敮⁹潵⁴桩湫⁹潵敥搬਼扲㸠慮搠椠摥獣物扥潷⁴漠畳攠楴ℊ㱢爾佋⁎佗℠汥瑳整灥捩晩挡਼扲㸼扲㸼扲㸊ਊਊ਼摩瘠 obviously i shortened it down but seriously. then i decided to copy all the text from the notepad after i saved it... and then paste it into a new one and ssave it as index.php (ansi) not unicode. and it didnt go away at first.. so i reloaded then it went back to normal. now its doing it again after i pasted some other javascript code that had nothing to do with all thsoe characters nor did i do the unicode change eithet. so i copy and pasted it into a new file deleted the old file off the server or whatever and uploaded and it hasnt changed. its a big bunch of those wtf is going on? Quote Link to comment https://forums.phpfreaks.com/topic/182569-how-to-copy-a-string-to-clipboardthats-been-highlight_string-d/#findComment-963698 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.