PHP - Fsockopen Problem
sorry about this . please can u delete it
Similar TutorialsI am trying to open a Unix server and was wondering how would you return what the Unix server is saying, ie the prompt? Here is the code I was using after reading the php.net. The $call variable is my attempt at reading the server and have it return what it says. I do have a connection to the server cause if I change the address or port number, i have the error in the log file saying the address refused the connection. Any help/insight is really appreciated. Thanks Code: [Select] <?php $host = "127.0.0.1"; $port = 9595; $fp = stream_socket_client("tcp://".$host.":".$port."", $errno, $errstr, 30); $call = fgets($fp); echo $call; fclose($fp); ?> I have this in a method: Code: [Select] <?php public function hear($socket_id = 0, $length = 1024){ $fp = fsockopen("localhost", 5565, $errno, $errstr); if(!$fp){ echo "$errno: $errstr";exit; } $heard = fread($fp, $length); fclose($fp); return $heard; } ?> It is then called like this: Code: [Select] <?php require_once '../phpLive/phpLive.php'; $live->listen(function(){ global $live; if(($heard = $live->hear())){ echo "I heard: $heard"; } }); ?> listen is a while loop that calls the passed function over and over. The problem I am having is when I run it I get this error: 10061: No connection could be made because the target machine actively refused it. I open the port, on my computer and it still doesn't work! What is causing this? Hello, I have recently started playing around with PHP, and have created a simple port checker with the help of a tutorial. Although what I would like to do is use an HTML form to insert the variable for fsockopen("xxxxx... instead of having it embedded. Is there any way to achieve this? <?php $connection = @fsockopen("www.google.com", 80); if ($connection) { echo "Port 80 on www.google.com is open."; fclose($connection); } else { echo "Port 80 on www.google.com is not open."; } Many thanks for any help that can be provided how is it possible to check how long a socket has been open for, using fsockopen? or if not fsockopen then what other function is good at checking this? basically i want to check a port on a site, and see how long it has been up for. Hey guys! I am writing a class file that does this: sends a GET/POST request with headers to a page and returns the HTML stores cookies Uses GZIp decompression I was wondering: what is the difference between fsockopen and curl? Which is faster for completing those tasks? Thanks Hi Experts, How can I check whether I have FSOCKOPEN support from phpinfo() page? Thanks, HI, I'm running the next script from my local host and the production server, and Im getting different outputs. Anyone knows why am I getting that error from my localhost? <?php $host = 'ssl://mail.companyname.org'; $port = 993; $error = 0; $errorString = ""; var_dump(fsockopen($host, $port, $error, $errorString, 30)); var_dump($errorString); var_dump($error);
> PHP Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Production server output: resource(4) of type (stream)
Edited November 26, 2020 by tirengarfio I am using this code to check if a server is running. Everything is fine when it is running, but when it's not, it takes ages for the fsockopen to fail. Is there a way to make it timeout faster? if (fsockopen($settings->survival_server, $settings->survival_port, $timeout = 0.1)){ $survival['status'] = "Up"; }else { $survival['status'] = "Down" } Okay, I'm using fsockopen to see if a port is being used, But all it does it crashes the page if it isn't. If it is one it works but if it is off the pages just doesn't load at all. Code: <?php $fp=fsockopen("localhost", 43594, $errno, $errstr, 30); if($fp){ echo('The server is <font color="#0066FF"><b>Online!</b></font>'); } else { echo('The server is <font color="#FF0000"><b>Offline!</b></font>'); } ?> Can one of you amazing helpful souls help me out? Thanks in advance! Okay guys, so i have a status checker connected to a mySql database. Now, what i want to do is have it check the status, then update the field in the table. Here is my code, please someone add or tell me how to add the update mysql thing. Code: [Select] <?php error_reporting(0); include '../dbc.php'; if(isset($_GET['id'])) { $id = intval($_GET['id']); //We check if the user exists $dn = mysql_query('select * from users where id="'.$id.'"'); if(mysql_num_rows($dn)>0) { $dnn = mysql_fetch_array($dn); //We display the user datas $offline='<font color="red">Offline</font>'; $online='<font color="green">Online</font>'; $host=(htmlentities($dnn['server_ip'])); $style=(htmlentities($dnn['style'])); $port=htmlentities($dnn['port']); $fp = fsockopen($host, 43594, $errno,$errstr, 4); if (!$fp){ echo('<font color="red">Offline</font>'); } else { $online=echo('<font color="green">Online</font>'); fclose($fp); } } } ?> Thanks, hope so one can help me Hi,
After a few years of having Barclays EPDQ payment gateway, they have now changed how they require the data to be sent to them - This has caused my site to stop working.
Now when the page redirects to epdq it is saying that the "Encrypted data is not present"
The original code for the fsockopen function was:
$fp = fsockopen('ssl://secure2.epdq.co.uk'. $host, 443, &$errno, &$errstr, 60); if(!$fp) { print "$errstr ($errno)<br />\n"; } else { fputs($fp, "POST /cgi-bin/CcxBarclaysEpdqEncTool.e HTTP/1.0\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\n"); fputs($fp, "Content-length: ".strlen($params)."\n\n"); fputs($fp, $params."\n\n"); while(!feof($fp)) { $output .= fgets($fp, 1024); } fclose($fp); } $response_lines = explode("\n",$output); $response_line_count = count($response_lines); for($i=0; $i<$response_line_count; $i++){ if(preg_match("/epdqdata/",$response_lines[$i])) { $curlencrypt = $response_lines[$i]; } }They have suggested this code instead: $header = "POST /cgi-bin/CcxBarclaysEpdqEncTool.e HTTP/1.1\n"; $header .= "Host: secure2.epdq.co.uk\n"; $header .= "Connection: close\n"; $header .= "Content-Type: application/x-www-form-urlencoded\n"; $header .= "Content-Length: " . strlen($data) . "\n\n"; $fp = @fsockopen("ssl://secure2.epdq.co.uk", 443, $errno, $errstr, 30);and then suggested using this to align it with the way my page is coded: fputs( $fp, "Content-type: application/x-www-form-urlencoded\n" ); fputs( $fp, "Content-length: ".$strlength."\n\n" ); fputs( $fp, "Host: ".$host."\n\n" ); fputs( $fp, $postdata."\n\n" );Can anyone point me in the right direction with this...? Code: [Select] <?php error_reporting(0); $email = ""; $password = ""; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.myspace.com/auth/login"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, 'formLocation=splashForm&captchaHandler=%2FModules%2FPageEditor%2FHandlers%2FLogin%2F%7B0%7D.ashx&captchaResponse=&hash=MIGcBgkrBgEEAYI3WAOggY4wgYsGCisGAQQBgjdYAwGgfTB7AgMCAAECAmYDAgIAwAQIWWaRadlhotEEEA15tDCUhuiBjy8nd6RN3nEEUOoYRIpPoA1uOadO5d%252bIlVuABvbaJHaznd%252fYWuR4TWNS2GUAl1G3GQZjRPA3SL%252fUrRZuPbiFT3fBtQzYnvOaR1sP8KzrzVcLGCeUlIObGSsg&SMSVerifiedCookieToken=&NextPage=&js=1&Email='.urlencode($email).'&Password='.urlencode($password).'&Remember=true&loginBtn='); curl_setopt($ch, CURLOPT_REFERER,'http://www.myspace.com/index.cfm?fuseaction=splash'); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, 'login.txt'); curl_setopt($ch, CURLOPT_COOKIEJAR, 'login.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_VERBOSE, 0); file_put_contents('output.txt', curl_exec($ch)); curl_setopt($ch, CURLOPT_URL, "http://www.myspace.com/games/play/104283"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)'); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIEFILE, 'login.txt'); curl_setopt($ch, CURLOPT_COOKIEJAR, 'login.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $output2=curl_exec($ch); if(stristr($output2, 'render.app#')){ preg_match('/\sid="apppanel_104283_canvas".*?render.app#([^&]+).*?viewerId=([0-9]+)/is', $output2, $matches); $GameLink = "http://api.msappspace.com/apprendering/104283/canvas/04082011040014/1_0_0/render.app#".$matches[1]; echo '<font style="BACKGROUND-COLOR: 15317E"><a href="'.$GameLink.'"><font color="white">'.$email.'</font>'; } sleep(1000); curl_close($ch); ?> I know this is possible to do the same exact thing with fsockopen, but I cannot get it for the life of me, any help is appreciated I have this inside of a method: if($output){ $opt = fread($pointer, 10000); if(!$headers){ $opt = preg_replace("/http.+(\r\n\r\n|\n\n|\r\r)/isU", "", $opt); } echo $opt; } one of my methods uses fsocketopen to open a file and start processing it. I then have this method which reads out the data to the page. as the file is being processed. Here is the file that is being processed Code: [Select] <?php function flush_buffers(){ ob_end_flush(); flush(); ob_start(); } for($i=0;$i<10;$i++){ echo "Test1: $i"; flush_buffers(); usleep(500000); } ?> when http outputs the data it also outputs the buffer size as well. I ran it on two files, and here was my output: Code: [Select] Test1: cats b Test1: cats b Test1: cats b Test1: cats b Test1: cats b Test1: cats b Test1: cats b Test1: cats b Test1: cats b Test1: cats 0 Test2: 0 8 Test2: 1 8 Test2: 2 8 Test2: 3 8 Test2: 4 8 Test2: 5 8 Test2: 6 8 Test2: 7 8 Test2: 8 8 Test2: 9 Is there any way to remove the buffer size (the "8" and the "b")? I basically went off of this and converted it to a class: http://phplens.com/phpeverywhere/?q=node/view/254 I found a pretty cool function that allows me to ping Pingomatic for new blogs that I have. Great. Now I can automate the process instead of manually going to their website. My problem is actually simple. Sometime Pingomatic is quite busy and is unable to receive the request. I want to be able to check the status of my ping request but I don't know how to get this specific field/variable? from the result. Here is the ping script: Code: [Select] $title = "My blog title"; $url = "http://mynewbloglink"; function pingomatic($title,$url,$debug=true) { $content='<?xml version="1.0"?>'. '<methodCall>'. ' <methodName>weblogUpdates.ping</methodName>'. ' <params>'. ' <param>'. ' <value>'.$title.'</value>'. ' </param>'. ' <param>'. ' <value>'.$url.'</value>'. ' </param>'. ' </params>'. '</methodCall>'; $headers="POST / HTTP/1.0\r\n". "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\r\n". "Host: rpc.pingomatic.com\r\n". "Content-Type: text/xml\r\n". "Content-length: ".strlen($content); if ($debug) nl2br($headers); $request=$headers."\r\n\r\n".$content; $response = ""; $fs=fsockopen('rpc.pingomatic.com',80, $errno, $errstr); if ($fs) { fwrite ($fs, $request); while (!feof($fs)) $response .= fgets($fs); if ($debug) echo "<xmp>".$response."</xmp>"; fclose ($fs); preg_match_all("/<(name|value|boolean|string)>(.*)<\/(name|value|boolean|string)>/U",$response,$ar, PREG_PATTERN_ORDER); for($i=0;$i<count($ar[2]);$i++) $ar[2][$i]= strip_tags($ar[2][$i]); return array('status'=> ( $ar[2][1]==1 ? 'ko' : 'ok' ), 'msg'=>$ar[2][3] ); } else { if ($debug) echo "<xmp>".$errstr." (".$errno.")</xmp>"; return array('status'=>'ko', 'msg'=>$errstr." (".$errno.")"); } } pingomatic($title,$url,$debug=true); This script works and when Pingomatic 'is available' returns something to the effect of Thanks for pinging, you're blog is being forwarded...etc. etc. When Pingomatic is too busy I receive the following result: Code: [Select] HTTP/1.1 200 OK Server: nginx Date: Mon, 30 Apr 2012 22:23:17 GMT Content-Type: text/xml;charset=utf-8 Connection: close Content-Length: 390 <?xml version="1.0"?> <methodResponse> <params> <param> <value> <struct> <member><name>flerror</name><value><boolean>1</boolean></value></member> <member><name>message</name><value><string>Pingomatic is a bit overloaded at the moment</string></value></member> </struct> </value> </param> </params> </methodResponse> What I'm trying to get in a variable is the '<member><name>message' result. In this case it's "Pingomatic is a bit overloaded at the moment". This way I can try to ping the server again later at another time knowing that the ping was not successful. What I've tried: I've attempted to see if the 'message' (Pingomatic is a bit overloaded at the moment) is in some of the variables within the original function: $pingresponse = "<xmp>".$errstr." (".$errno.")</xmp>"; $pingresponse2 = "<xmp>".$response."</xmp>"; $pingresponse3 = array('status'=> ( $ar[2][1]==1 ? 'ko' : 'ok' ), 'msg'=>$ar[2][3] ); echo "Ping Server Response : Debug: ".$debug." Errstr :".$errstr." Errno: ".$errno."Response: ".$response; But it isn't. My plan was to use strpos to search for the term "Pingomatic is a bit overloaded at the moment" in which I'll be able to know whether or not the ping was successful or not. Any ideas? Guys thanks for helping me solve the problem i had but now i have another problem and i am lost. i have included the code below for you to have overview.
This is the code:
<table style="width:100%; margin-left:auto; margin-right:auto"> Hello everyone Just found this forum and really need some help. I'm trying to create a popup contact form for my product pages. I managed to get a php form from a random site and i cant get the form to pop up. http://www.e-sol.co.uk/printer-scanner-copier.php If someone could help i would be very grateful. I am trying to understand PHP OOP and I have some code that is not working. here is the error code. Code: [Select] Parse error: parse error, expecting `T_FUNCTION' in C:\wamp\www\testing\armor_lib.php on line 11 And here is the armor_lib.php file: <?php class armor { // Head public $head; public $torso; public $pants; public $gloves; public $boots; // new stuff here class head extends armor { function __construct($head){ $this->set_head($head); } } // Torso class torso extends armor { function __construct($torso){ $this->set_torso($torso); } } // Pants class pants extends armor { function __construct($pants){ $this->set_pants($pants); } } // Gloves class gloves extends armor { function __construct($gloves){ $this->set_gloves($gloves); } } // Boots class boots extends armor { function __construct($boots){ $this->set_boots($boots); } } } ?> And here is the php in the armor.php file I have: <?php $head = new armor("Leather Helm"); $torso = new armor("Leather Shirt"); $pants = new armor("Leather Pants"); $gloves = new armor("Chain Mail Gloves"); $boots = new armor("Leather Boots"); echo "You are wearing: " . $head->get_head() . "on your Head"; echo "<br />"; echo "You are wearing: " . $torso->get_torso() . "on your Torso"; echo "<br />"; echo "You are wearing: " . $pants->get_pants() . "on your Legs"; echo "<br />"; echo "You are wearing: " . $gloves->get_gloves() . "on your Hands"; echo "<br />"; echo "You are wearing: " . $boots->get_boots() . "on your Feet"; ?> Any Help in understanding this will be much appreciated. Thanks. so i want to call my php file with a query string to select a record out of a XML file... im close but cant get the variable i pass to be the record selected.. example... index.php?auction=1 i highlighted in red, where it doesnt pick up the proper row Code: [Select] <?php ini_set('display_errors', 1); error_reporting(E_ALL); $auction = $_GET{auction}; // parse the xml $xmlFileData = file_get_contents("items.xml"); $xmlData = new SimpleXMLElement($xmlFileData); [color=red]$location = $xmlData->item[$auction];[/color] //Retrieving the content from the selected item $title = $location->title; $value = $location->value; $itemnumber = $location->itemnumber; $description = $location->description; $donatedby = $location->donatedby; $image1 = $location->image1; $image2 = $location->image2; $image3 = $location->image3; $image4 = $location->image4; $image5 = $location->image5; $image6 = $location->image6; $image7 = $location->image7; $image8 = $location->image8; ?> <style> .itemimages img {width: 10px; height: 10px;} img.large {width: 100px; height: 100px;} </style> <script language="JavaScript" src="http://code.jquery.com/jquery-1.5.min.js" type="text/javascript"></script> <script> $().ready(function() { $(".itemimages img").click( $("#largepic").attr("src","this"); }); }); </script> <table border="1" cellpadding="10"> <tr> <td valign="top"> <img src="<?php echo $image1 ?>" alt="" border="0" class="large" id="largepic"><br> <div class="itemimages"> <?php // image 1 if (trim(''.$image1) != '') { echo "<img src='"; echo $image1; echo "' alt='' border='0'/> "; } // image 2 if (trim(''.$image2) != '') { echo "<img src='"; echo $image2; echo "' alt='' border='0'/> "; } // image 3 if (trim(''.$image3) != '') { echo "<img src='"; echo $image3; echo "' alt='' border='0'/> "; } // image 4 if (trim(''.$image4) != '') { echo "<img src='"; echo $image4; echo "' alt='' border='0'/> "; } // image 5 if (trim(''.$image5) != '') { echo "<img src='"; echo $image5; echo "' alt='' border='0'/> "; } // image 6 if (trim(''.$image6) != '') { echo "<img src='"; echo $image6; echo "' alt='' border='0'/> "; } // image 7 if (trim(''.$image7) != '') { echo "<img src='"; echo $image7; echo "' alt='' border='0'/> "; } // image 8 if (trim(''.$image8) != '') { echo "<img src='"; echo $image8; echo "' alt='' border='0'/> "; } ?> </div> </td> <td valign="top"> <?php echo $title ?><br> Estimated Value: <?php echo $value ?><br> Item Number: <?php echo $itemnumber ?><br><br> <?php echo $description ?><br><br> Donated by: <?php echo $donatedby ?><br> </td> </tr> </table> Code: [Select] <?php require('config.php'); $sql = "SELECT m.Title as title , f.Reg_URL as reg FROM website_main as m JOIN website_front as f LIMIT 0,01 "; $result = @mysql_query($sql) or die(mysql_error()); echo "<table border='3'>"; echo "<font size='9'><tr> <th><FONT COLOR=red><center>Title</center></font></th> <th><FONT COLOR=red>reg</th> </tr></font>"; // keeps getting the next row until there are no more to get while($row = mysql_fetch_array( $result )) { // Print out the contents of each row into a table $reg = $row['reg']; echo "<tr><td bgcolor=''><center>"; echo $row['title']; echo "</td><td bgcolor=''><center>"; echo '.$reg.'; echo "</td></tr>"; } ?> I got a problem i try to use an attribute for $reg but only appears as .$reg. on website anyone know why? Parts i have problems with are $reg = $row['reg']; and echo '.$reg.';. thank you im making a website it works fine on firefox but on ie doesnt work correctly. page looks weird i see the error is <? include("index/index_files/front/php/include.php"); ?> anyone can help me its in a <html> tab. |