在WordPress环境之外的开发环境中,我的代码在本地主机上运行良好。我知道PHP函数正在工作。我可以从PC上的本地主机向服务器发送测试投票。
Problem: 我无法在WordPress中使用此功能。
My Thoughts我认为这是一个路径问题,但我已经尝试将PHP脚本放在根目录中并使用完整路径。我在web浏览器控制台(f12)中没有收到任何错误。
WordPress Version: 5.4.1我将我的自定义php代码放入“/wp-contents/custom-php/votifier.php”我的JQuery脚本在标题中。(是的,我知道我应该把它放在页脚。)
The Button
<div id="voteButton">
<button type="button">Try it</button>
</div>
Localhost Version
<script>
$(document).ready(function(){
$("#voteButton").click(function(){
$.post("votifier/votifier.php",
{
key: $.trim($("#field_yjr62").val()),
ip: $(\'input[name="item_meta[40]"]\').val(),
port: $(\'input[name="item_meta[42]"]\').val(),
service: "Votifier",
username: $(\'input[name="item_meta[59]"]\').val()
},
function(data,status){
alert("Data: " + data + "\\nStatus: " + status);
});
});
});
</script>
一<script> jQuery(document).ready(function( $ ) { jQuery("#voteButton").click(function(){ $.post("/home/xxxxxxxxxxxx/public_html/wp-content/custom-php/votifier.php", { key: $.trim($("#field_yjr62").val()), ip: $(\'input[name="item_meta[40]"]\').val(), port: $(\'input[name="item_meta[42]"]\').val(), service: "Votifier", username: $(\'input[name="item_meta[59]"]\').val() }, function(data,status){ alert("Data: " + data + "\\nStatus: " + status); }); }); }); </script>
My Custom PHP Script
<?php const VOTE_FORMAT = "VOTE\\n%s\\n%s\\n%s\\n%d\\n"; const PUBLIC_KEY_FORMAT = "-----BEGIN PUBLIC KEY-----\\n%s\\n-----END PUBLIC KEY-----"; $public_key = formatPublicKey($_POST[\'key\']); $server_ip = $_POST["ip"]; $port = $_POST["port"]; $service_name = $_POST["service"]; $username = $_POST["username"]; sendVote($username, $public_key, $server_ip, $port, $service_name); function formatPublicKey($public_key) { $public_key = wordwrap($public_key, 65, "\\n", true); $public_key = sprintf(PUBLIC_KEY_FORMAT, $public_key); return $public_key; } function sendVote($username, $public_key, $server_ip, $port, $service_name) { if (php_sapi_name() !== \'cli\') { //Detect proxy and use correct IP. $address = isset($_SERVER[\'HTTP_X_FORWARDED_FOR\']) ? $_SERVER[\'HTTP_X_FORWARDED_FOR\'] : $_SERVER[\'REMOTE_ADDR\']; } else { //Script is run via CLI, use server name. $address = $_SERVER[\'SERVER_NAME\']; } $data = sprintf(VOTE_FORMAT, $service_name, $username, $address, time()); openssl_public_encrypt($data, $crypted, $public_key); $socket = @fsockopen($server_ip, $port); if ($socket) { if (fwrite($socket, $crypted)) { fclose($socket); return true; } } return false; } ?>
Network Info
Request URL:https://bestlist.com/home/xxxxxxxxxxxx/public_html/wp-content/custom-php/votifier.php Request Method:POST Remote Address:999.999.999.99:443 Status Code: 404 Version:HTTP/2 Referrer Policy:strict-origin-when-cross-origin