PHP - Curl Response And Redirect
Hi, I'm posting a form using curl:
Code: [Select] <?php //create the final string to be posted using implode() $post_str = implode ('&', $post_items); //Initialize cURL and connect to the remote URL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://leads..html' ); //Instruct cURL to do a regular HTTP POST curl_setopt($ch, CURLOPT_POST, TRUE); //Specify the data which is to be posted curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str); //Tell curl_exec to return the response output as a string curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //Follow 302 redirect curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Timeout in seconds curl_setopt($ch, CURLOPT_TIMEOUT, 30); //verify https curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //Execute the cURL session $response = curl_exec($ch ); //Close cURL session and file curl_close($ch); echo $response; $resp = explode("\n\r\n", $response); $header = explode("\n", $resp[0]); echo "<pre>"; print_r($header); echo "</pre>"; ?> The response is: success: https://www-somesite.html or Array ( => success: https://www-somesite.html ) My question is how to get the returned URL and redirect the user to it? Probably easy but seems to be beyond my very limited php knowledge. Thanks. Similar TutorialsA HTTP request is made to the server, Slim creates a Request and Response object, content in the Request is sent to another server using cURL via Guzzle, Guzzle returns its own Response, and content from Guzzle's response must be returned by the original Slim response. Would you recommend white-listing or black-listing response headers, and which specific headers? Similarly, would you recommend white-listing or black-listing the request headers sent via cURL, and which specific headers? Thanks <?php use Psr\Http\Message\ResponseInterface as Response; use GuzzleHttp\Psr7\Response as CurlResponse; class ApiResponder { public function delete(Response $httpResponse, CurlResponse $curlResponse) { return $this->proxy($httpResponse, $curlResponse); } //other public methods... private function proxy(Response $httpResponse, CurlResponse $curlResponse) { foreach($this->getResponseHeaders($curlResponse) as $name=>$value) { $httpResponse=$httpResponse->withHeader($name, $value); } return $httpResponse->withBody($curlResponse->getBody())->withStatus($curlResponse->getStatusCode()); } private function getResponseHeaders(Response $httpResponse):array { //Blacklist headers which should be returned to original client. TBD whether I should whitelist headers instead. $blacklist=['Date'=>null, 'Server'=>null, 'X-Powered-By'=>null, 'Access-Control-Allow-Origin'=>null, 'Access-Control-Allow-Methods'=>null, 'Access-Control-Allow-Headers'=>null, 'Set-Cookie'=>null]; return array_diff_key($curlResponse->getHeaders(), $blacklist); } /** * This method doesn't really exist in this class, but is just included to show which headers I am forwarding in the cURL request. */ private function getRequestHeaders($clientRequest):array { $whitelist=['connection'=>null,'accept'=>null,'accept-encoding'=>null,'accept-language'=>null,'content-type'=>null,'content-length'=>null]; return array_intersect_key($clientRequest->getHeaders(), $whitelist); } }
I have been using PHP CURL to obtain stock data... The URL is
https://trade.plus50...ntName=Facebook
Essentially, it is supposed to return date, time, and price of stock tick data
But it returns stuff like "HrCy/h6wsw4esLL+HrCzDh6wsw4esLMOHrCzDh6wsu4esLLeHrCy7h6wsu4esLL"
So... I would like to know, what is this format, and how do I decode it? Thanks
Here is the full response....
{"InstrumentName":"Facebook","InstrumentID":1350,"StartPointDate":"2014-12-19 20:42:45.837","LastPointDate":"2014-12-19 20:59:59.463","SellRate":"MuHrCzHh6wsx4esLMuHrCzHh6wsy4esLMuHrCzLh6wsy4esLMuHrCzLh6wsz4esLMuHrCzDh6wsw4esLMOHrCzDh6wsv4esLMOHrCzDh6wsw4esLL+HrCy/h6wsw4esLL+HrCzDh6wsw4esLMOHrCzDh6wsu4esLLeHrCy7h6wsu4esLL+HrCy7h6wst4esLLeHrCy3h6wsu4esLLuHrCy7h6wsu4esLLeHrCy3h6wst4esLLeHrCy7h6wsu4esLLuHrCyzh6wsu4esLLeHrCy7h6wsu4esLLuHrCy7h6wsu4esLLeHrCy7h6wsu4esLLuHrCzHh6wsy4esLMuHrCzLh6wsz4esLNOHrCzLh6wsy4esLMuHrCzPh6wsy4esLMuHrCzDh6wsw4esLMeHrCzHh6wsx4esLMOHrCzDh6wsw4esLMeHrCzHh6wsv4esLMOHrCy/h6wst4esLLeHrCyvh6wsq4esLKuHrCyzh6wss4esLLOHrCy3h6wst4esLLOHrCyvh6wsr4esLKuHrCyrh6wsq4esLKuHrCyjh6wsp4esLKOHrCynh6wso4esLK+HrCyvh6wss4esLK+HrCyvh6wsr4esLK+HrCyvh6wsr4esLKeHrCyrh6wsp4esLKOHrCyjh6wsp4esLKOHrCynh6wso4esLKeHrCynh6wsp4esLKOHrCyjh6wsn4esLJ+HrCybh6wsn4esLJuHrCybh6wsl4esLJOHrCyXh6wsm4esLJuHrCybh6wsm4esLJuHrCybh6wso4esLKOHrCynh6wsp4esLKeHrCynh6wsp4esLKeHrCyjh6wso4esLKeHrCynh6wsp4esLKOHrCyjh6wso4esLKeHrCyjh6wsp4esLKeHrCyjh6wso4esLKeHrCynh6wsq4esLK+HrCyvh6wsr4esLK+HrCyvh6wsr4esLK+HrCyzh6wss4esLLOHrCyrh6wsp4esLKeHrCynh6wsp4esLKOHrCyjh6wso4esLJ+HrCyfh6wsn4esLJ+HrCyfh6wsn4esLJ+HrCyjh6wsn4esLJuHrCyXh6wsl4esLJOHrCyXh6wsl4esLJOHrCyTh6wsj4esLI+HrCyTh6wsk4esLJOHrCyTh6wsl4esLJuHrCyXh6wsl4esLJeHrCyfh6wsm4esLJuHrCyfh6wsn4esLJuHrCybh6wsm4esLJuHrCyfh6wsn4esLJ+HrCyfh6wsn4esLJ+HrCyfh6wso4esLJ+HrCyjh6wso4esLKeHrCyjh6wso4esLKeHrCy3h6wss4esLLuHrCy3h6wsv4esLL+HrCy7h6wsv4esLL+HrCzHh6wsy4esLMuHrCzLh6wsz4esLM+HrCzXh6ws04esLNOHrCzTh6ws04esLNuHrCzXh6ws14esLNeHrCzbh6ws24esLNuHrCzfh6ws34esLN+HrCzfh6ws44esLN+HrCzjh6ws34esLNuHrCzfh6ws24esLNuHrCzbh6ws24esLNuHrCzbh6ws14esLNeHrCzXh6ws04esLNeHrCzfh6ws24esLNuHrCzjh6ws54esLOeHrCzrh6ws64esLOuHrCzvh6ws64esLOeHrCznh6ws54esLOuHrCzjh6ws64esLOuHrCzvh6ws74esLOuHrCzvh6ws64esLOuHrCzvh6ws64esLO+HrCzvh6ws74esLOeHrCzjh6ws44esLOOHrCzjh6ws44esLOOHrCzjh6ws34esLN+HrCzfh6ws34esLN+HrCzfh6ws34esLN+HrCzfh6ws34esLN+HrCzbh6ws24esLNeHrCzTh6ws04esLNeHrCzXh6ws04esLNeHrCzbh6ws34esLNuHrCzXh6ws24esLN+HrCzfh6ws24esLN+HrCzfh6ws34esLN+HrCzfh6ws24esLN+HrCzfh6ws24esLNuHrCzXh6ws04esLNOHrCzTh6wsz4esLMuHrCzLh6wsy4esLMuHrCzPh6wsz4esLM+HrCzPh6wsz4esLM+HrCzPh6wsz4esLM+HrCzPh6wsz4esLNOHrCzTh6ws04esLNOHrCzTh6ws04esLNOHrCzPh6ws04esLNOHrCzPh6ws04esLNOHrCzTh6ws04esLNOHrCzPh6wsz4esLMuHrCzPh6wsy4esLM+HrCzLh6wsz4esLMuHrCzPh6wsy4esLM+HrCzPh6wsz4esLM+HrCzLh6wsy4esLMuHrCzLh6wsy4esLM+HrCzPh6wsz4esLM+HrCzPh6wsz4esLMuHrCzPh6ws04esLNOHrCzXh6ws14esLN+HrCzfh6ws34esLN+HrCzjh6ws34esLNeHrCzXh6ws24esLNeHrCzXh6ws14esLNeHrCzXh6ws14esLNeHrCzXh6ws14esLNeHrCzXh6ws04esLNOHrCzTh6ws04esLNOHrCzTh6ws04esLNOHrCzTh6wsz4esLM+HrCzPh6wsz4esLNOHrCzPh6ws04esLNOHrCzTh6ws04esLNOHrCzXh6ws04esLNeHrCzXh6ws14esLNuHrCzfh6ws34esLN+HrCzfh6ws24esLNuHrCzfh6ws24esLNeHrCzXh6ws04esLNOHrCzXh6ws04esLNOHrCzXh6ws24esLNuHrCzbh6ws24esLNeHrCzTh6ws14esLNeHrCzTh6ws04esLNOHrCzTh6ws04esLNOHrCzTh6ws04esLNOHrCzTh6ws04esLNOHrCzPh6wsz4esLM+HrCzPh6wsz4esLM+HrCzPh6wsz4esLM+HrCzPh6wsz4esLMuHrCzLh6wsx4esLMeHrCzHh6wsx4esLMeHrCzDh6wsv4esLMOHrCzDh6wsw4esLL+HrCy/h6wsv4esLMOHrCzLh6wsy4esLL+HrCy/h6wsv4esLMOHrCy/h6wsv4esLMeHrCzHh6wsy4esLM+HrCzPh6wsy4esLMuHrCzLh6wsy4esLM+HrCzLh6wsy4esLM+HrCzPh6wsz4esLMuHrCzPh6wsz4esLM+HrCzPh6wsy4esLMuHrCzHh6wsz4esLMeHrCzHh6wsx4esLMeHrCzLh6wsx4esLL+HrCy7h6wsw4esLMeHrCzDh6wsx4esLMOHrCzHh6wsw4esLL+HrCy/h6wsr4esLK+HrCynh6wso4esLKeHrCybh6wso4esLKOHrCybh6wsl4esL","DeltaDateTime":"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","CurrentTime":"2014-12-21 12:36:48.939","PrecisionDigits":2,"SpreadPipsCount":5,"IsDynamicSpread":false}
Hello, I am trying to do multiple curl requests and get the response for each one output to the screen. I have wrote the following code, but only appear to be getting the last response when outputting $result. What am i doing wrong? Is there a way to wait for each curl request to be completed before appending to $result so I can see them all? Thanks very much if (isset($_POST['submit'])) { $result = array(); foreach ($textAr as $line) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate"); $result[] = curl_exec ($ch); } curl_close ($ch); echo "<pre>"; print_r($result); echo "</pre>"; }
Hi all, I'm using curl to post some data, and the response is (assuming no errors) either <boolean>true</boolean> or <boolean>false</boolean>. So if I use simplexml_load_string, the result is returned as an object. I'm trying to make this a boolean so I can handle the response, but it doesn't seem to be working....checking for false didn't stop anything from happening. Here's the problem code: Code: [Select] $result = curl_exec($ch); $xml = settype(simplexml_load_string($result),"boolean"); if (curl_errno($ch) || $xml === false) { throw new Exception(curl_error($ch)); }
Hello guys, <?xml version="1.0" encoding="utf-8"?> <string xmlns="http://tempuri.org/">false</string>
Unfortunately the curl returns something that I can't parse to XML and get the value "false" $soap_do = curl_init(); curl_setopt($soap_do, CURLOPT_URL, $url ); curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true ); curl_setopt($soap_do, CURLOPT_POST, true ); curl_setopt($soap_do, CURLOPT_POSTFIELDS, $soap_request); curl_setopt($soap_do, CURLOPT_HTTPHEADER, $header); curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($soap_do); $xml = simplexml_load_string($result); return $xml; How do I parse this SOAP response? Thank you very much Hi, I submit form data as an xml string - $strXML - using curl: curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, '1'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, array('lead'=>$strXML)); $strResult = curl_exec($ch); // close cURL resource, and free up system resources curl_close($ch); The xml response is: <result> <posting_error>0</posting_error> <lead>0</lead> <valid>1</valid> <redirect_url>http://www.xxx.com</redirect_url> </result> and I need to redirect the user to <redirect_url>. I am trying the following: $xml = new SimpleXMLElement($strResult); header("Location:" . $xml->result->redirect_url); but with no joy. Could anyone suggest how I can achieve what I want? Thanks. Hey guys, I've been googling for hours and there are millions of threads similar, but none of which i can make sense of! I am trying to automatically log into my 99designs.com account using curl in php. The problem is that I redirect to 99designs.com after logging in. I can log in, and display the code within my php page, but i can't actually get to 99designs.com My code looks a little like this: Code: [Select] $params = "email=<myEmail>&password=<myPassword>&from=/login?from=%2F"; $ch = curl_init(); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_COOKIESESSION,true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_RETURNTRANSFER,0); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); curl_setopt($ch, CURLOPT_URL,'https://99designs.com/login'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec ($ch); curl_close ($ch); Any ideas what I'm missing? Thanks. I have a paypal shopping cart form. Right now the form submits to paypals normal site and works fine. But the problem is the user can use firebug and change the price before sending to paypal. So i want the form to submit to my php script, where ill whatever is in the session, not what was posted, create an NVP string from that post, then POST that to paypal. I thought i could do this with cURL, but cURL always responds, it never actually takes the user to paypal with post. Is there a way to mimic what a form submit does completely in PHP? good day dear community, i am workin on a Curl loop to fetch multiple pages: i have some examples - and a question: Example: If we want to get information from 3 sites with CURL we can do it like so: $list[1] = "http://www.example1.com"; $list[2] = "ftp://example.com"; $list[3] = "http://www.example2.com"; After creating the list of links we should initialize the cURL multi handle and adding the cURL handles. $curlHandle = curl_multi_init(); for ($i = 1;$i <= 3; $i++) $curl[$i] = addHandle($curlHandle,$list[$i]); Now we should execute the cURL multi handle retrive the content from the sub handles that we added to the cURL multi handle. ExecHandle($curlHandle); for ($i = 1;$i <= 3; $i++) { $text[$i] = curl_multi_getcontent ($curl[$i]); echo $text[$i]; } In the end we should release the handles from the cURL multi handle by calling curl_multi_remove_handle and close the cURL multi handle! If we want to another Fetch of sites with cURL-Multi - since this is the most pretty way to do it! Well I am not sure bout the string concatenation. How to do it - Note I want to fetch several hundred pages: see the some details for this target-server sites - /(I have to create a loop over several hundred sites). * siteone.example/?show_subsite=9009 * siteone.example/?show_subsite=9742 * siteone.example/?show_subsite=9871 .... and so on and so forth Question: How to appy this loop into the array of the curl-multi? <?php /************************************\ * Multi interface in PHP with curl * * Requires PHP 5.0, Apache 2.0 and * * Curl * ************************************* * Writen By Cyborg 19671897 * * Bugfixed by Jeremy Ellman * \***********************************/ $urls = array( "siteone", "sitetwo", "sitethree" ); $mh = curl_multi_init(); foreach ($urls as $i => $url) { $conn[$i]=curl_init($url); curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);//return data as string curl_setopt($conn[$i],CURLOPT_FOLLOWLOCATION,1);//follow redirects curl_setopt($conn[$i],CURLOPT_MAXREDIRS,2);//maximum redirects curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,10);//timeout curl_multi_add_handle ($mh,$conn[$i]); } do { $n=curl_multi_exec($mh,$active); } while ($active); foreach ($urls as $i => $url) { $res[$i]=curl_multi_getcontent($conn[$i]); curl_multi_remove_handle($mh,$conn[$i]); curl_close($conn[$i]); } curl_multi_close($mh); print_r($res); ?> I look forward to your ideas. I'm trying to put together a script that redirects visitors based on their IP, user agent and/or referral url. Basically I want the script to scan these three factors from the visitor, if any of them turn out to match my redirect-requirement it redirects the user. I know the code is horribly coded, I'm incredibly new to the php-scene and consider myself a complete noob. As you can see I want redirected visitors to go to google.com and un-redirected to msn.com(examples). Really thankful for all the help I can get! Right now nothing works, any suggestions? <?php function redirect($page) { Header( "HTTP/1.1 301 Moved Permanently" ); header('Location: ' . $page); exit; } $referrals=array('pitchingit.org','referral2'); $badAgents = array("useragent1", "useragent2"); $deny = array("78.105.191..*","100.101.103..*"); if (in_array($_SERVER['HTTP_REFERER'], $referrals, FALSE)) { header("Location: http://www.google.com"); } else { header("Location: http://www.msn.com"); } if(in_array($_SERVER['HTTP_USER_AGENT'],$badAgents)) { redirect("http://www.google.com/"); exit(); } $add=$_SERVER['REMOTE_ADDR']; foreach ($deny as $ip) { if (preg_match("^.$add.*^",$ip)) { redirect("http://www.google.com"); } } redirect("http://www.msn.com"); ?> Hello, I'm trying to get webservice response in xml format. I'm getting the response but it's not in xml. It's just text. Can someone please look at the code ? <?php $targeturl="https://api.com"; $DevKey= "xxxxx"; // return xml feed $ch = curl_init($targeturl); curl_setopt($ch, CURLOPT_POST, FAlSE); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: '.$DevKey)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $response = curl_exec($ch); $xml = new SimpleXMLElement($response); curl_close($ch); echo $response; // will print in browser all country codes in an xml format /* ADD YOUR OWN CODE HERE TO DO WHAT YOU WANT WITH THE RESPONSE. MAYBE SAVE RESULTS TO A FILE OR THE PARSE THE RESULTS INTO A DATABASE? */ ?> Folks, I have a mysql tbl called "links". In it a column named "keywords". The row 0 has a keyword "search" in the "keywords" column. I am doing a search for the words "search" in the html form. Clicking the button gives no response! What is wrong ? I get no mysql connection error. Nor any php error. So it should work and respond! <form name = "search" method = "POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <label for="keywords">Keywords:*</label> <input type="text" name="keywords" id="keywords" placeholder="Input Keywords" required> <br> <input type="button" name="search_links" id="search_links" value="Search Links!"> <br> <input type="reset"> <br> </form>
Full short code ... <?php //include('error_reporting.php'); ini_set('error_reporting','E_ALL');//Same as: error_reporting(E_ALL); ini_set('display_errors','1'); ini_set('display_startup_errors','1'); ?> <form name = "search" method = "POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <label for="keywords">Keywords:*</label> <input type="text" name="keywords" id="keywords" placeholder="Input Keywords" required> <br> <input type="button" name="search_links" id="search_links" value="Search Links!"> <br> <input type="reset"> <br> </form> <?php if($_SERVER['REQUEST_METHOD'] === 'POST') { if(ISSET($_POST['search_links'])) { if(ISSET($_POST['keywords'])) { $keywords = $_POST['keywords']; } mysqli_report(MYSQLI_REPORT_ALL|MYSQLI_REPORT_STRICT); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $conn = mysqli_connect("localhost","root","","test"); $db_server = 'localhost'; $db_user = 'root'; $db_password = ''; $db_database = 'test'; $conn->set_charset('utf8mb4');//Always use Charset. if (!$conn) { //Error Message to show user in technical/development mode to see errors. die("Database Error : " . mysqli_error($conn)); //Error Message to show User in Layman's mode to see errors. die("Database error."); exit(); } $query = "SELECT page_url,link_anchor_text,page_description,keyphrases,keywords FROM links WHERE keywords = ?"; $stmt = mysqli_stmt_init($conn); if(mysqli_stmt_prepare($stmt,$query)) { mysqli_stmt_bind_param($stmt,'s',$keywords); $result = mysqli_stmt_bind_result($stmt,$page_url,$link_anchor_text,$page_description,$keyphrase,$keywords); mysqli_stmt_execute($stmt); mysqli_stmt_fetch($stmt); while(mysqli_stmt_fetch($result)) { echo "url"; echo "<br>"; echo "anchor_text"; echo "<br>"; echo "description"; echo "<br>"; echo "keyphrases"; echo "<br>"; echo "keywords"; echo "<br>"; echo "|"; echo "<br>"; } mysqli_stmt_close($stmt); mysqli_close($conn); } else { echo "1. QUERY failed!"; } if(mysqli_stmt_prepare($stmt,$query)) { mysqli_stmt_bind_param($stmt,'s',$keywords); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); while($row = mysqli_fetch_array($result,mysqli_assoc)) { $page_url = $row['page_url']; echo $page_url; echo "<br>"; $link_anchor_text = $row['link_anchor_text']; echo $link_anchor_text; echo "<br>"; $page_description = $row['page_description']; echo $page_description; echo "<br>"; $keyphrases = $row['keyphrases']; echo $keyphrases; echo "<br>"; $keywords = $row['keywords']; echo $keywords; echo "<br>"; echo "|"; echo "<br>"; } mysqli_stmt_close($stmt); mysqli_close($conn); } else { die("2. QUERY failed!"); } } } ?> Hello All, Just working with PHP's snap v1 functions I can use snmpget fine but snmpset produces the following error; Warning: snmpset() [function.snmpset]: No response from 192..... Code Code: [Select] <?PHP echo 'File started <br />'; $ip = '192.168.1.100'; echo 'Read:<br />'; $sysdescr = snmpget($ip, 'public', '.1.3.6.1.4.1.17095.3.4.0', 300); echo $sysdescr; echo 'Write Started:<br />'; snmpset("$ip", 'public', '.1.3.6.1.4.1.17095.4.7.2.0', 's', 'sam@samtwilliams.co.uk', 300); ?> Like i said the get works fine just the set does not. Does anyone have any ideas? Sam I send off this: <?php $data = "<egateway> <eCardExpiryMonth>01</eCardExpiryMonth> <eCardExpiryYear>04</eCardExpiryYear> <eCardHoldersName>Joe Bloke</eCardHoldersName> <eCardNumber>4444333322221111</eCardNumber> <eCVN>123</eCVN> <eTotalAmount>100</eTotalAmount> </egateway> "; $ch = curl_init(); curl_setopt($ch, CURLOPT_POSTFIELDS, $edata); curl_setopt($ch, CURLOPT_URL, "https://www.example.com/gateway_cvn/testpage.asp"); curl_exec($ch); curl_close($ch); ?> In return, I get the following XML: Code: [Select] <eResponse> <eTrxnStatus>True</eTrxnStatus> <eTrxnNumber>20219</eTrxnNumber> <eAuthCode>123456</eAuthCode> <eReturnAmount>100</eReturnAmount> <eTrxnError>00,Transaction Approved(Test CVN Gateway)</eTrxnError> </eResponse> Is there a way to make it so this does not show, and instead I can make PHP do something like: if (eTrxnStatus == True) {// do stuff}; ? When I submit the login form its not returning anything and it was working until I added in the $remember part so I'm wondering why its still not returning TRUE. Code: [Select] /** * Login user on the site. Return TRUE if login is successful * (user exists and activated, password is correct), otherwise FALSE. * * @param string * @param string * @param int * @return bool */ function login($username, $password, $remember) { $this->ci->load->model('kow_auth/users'); $user_data = $this->ci->users->get_user_by_username($username); if ($user_data) { $regenFromPostPW = $this->ci->genfunc->reGenPassHash($password, $user_data->password2); if ($regenFromPostPW == $user_data->password) { $this->ci->session->set_userdata(array( 'xtr' => 'yes', 'user_id' => $user_data->user_id, 'username' => $user_data->username, 'status' => $user_data->users_statuses_id, 'role' => $user_data->users_roles_id )); if ($remember == 1) { $timeTOexpire = time()+(60*60*24*31*2); $this->input->set_cookie('xtrcook', '1', $timeTOexpire); } else { $cookie = trim(get_cookie('xtrcook')); if ($cookie || is_numeric($cookie)) { delete_cookie('xtrcook'); } } $this->clear_login_attempts($user_data->user_id); $this->ci->users->insert_session($this->ci->session->userdata('session_id'), $this->ci->session->userdata('user_id'), $this->ci->genfunc->getRealIpAddr(), $this->ci->genfunc->getUserOS()); return TRUE; } else { $this->increase_login_attempt($user_data->user_id); } } else { return NULL; } } Hello All, running into a situation that I have not seen before. I have been seeing in multiple areas of my application that the response received from the server has 2 JSON responses in it. Here is a sample function: private function getCatalogItems(){ $start = ($_REQUEST["start"] == null)? 0 : $_REQUEST["start"]; $count = ($_REQUEST["limit"] == null)? 20 : $_REQUEST["limit"]; $q = "SELECT c.`id`, c.`catalog_number`, c.`long_description`, CONCAT(c.`catalog_number`, ' - ', c.`long_description`) AS `display` FROM catalog c"; if(!empty($_REQUEST['query'])){ $q .= " WHERE c.`catalog_number` LIKE '%".$_POST['query']."%'"; } $q .= " ORDER BY c.`catalog_number` ASC LIMIT ".$start.",".$count; $rs = $this->db->get_results($q); $total = $this->db->num_rows; $buff = '{"total":"'.$total.'","data":'.json_encode($rs).'}'; $this->c->returnJSON($buff); } The "returnJSON" function looks like this. public function returnJSON($json){ $contentType = "application/json; charset=utf-8"; header("Content-Type: {$contentType}"); header("Content-Size: " . strlen($json)); echo $json; } As you can see this simply sets the headers of the response. It has been a real head scratcher. Anyone come across something like this before? How can I receive a response from the server with JSON data, when the function that retrieves the data and returns it to the browser has been completely commented out? I am making an AJAX request for JSON formatted data and for some reason it returns a response when it shouldn't as there is no function? Hi, I currently have this code: Code: [Select] <?php function respond_xml($status, $message) { $out = new XMLWriter(); $out->openURI("php://output"); $out->setIndent(true); $out->startDocument("1.0", "ISO-8859-1"); $out->startElement("statuscheck"); $out->writeElement("status", $status); $out->writeElement("message", $message); $out->endElement(); $out->endDocument(); $out->flush(); } function main() { header("Content-type: text/xml"); if (!isset($_GET["file"])) respond_xml("ERROR", "File parameter missing"); else if (file_exists($_GET["file"])) return respond_xml("OK", "File exists"); else return respond_xml("NOT OK", "File does not exist"); } main(); ?> This code works and gives a correct XML response when you type in for example "http://localhost:8080/php/script.php?file=test" it's says: Code: [Select] <statuscheck> <status>NOT OK</status> <message>File does not exist</message> </statuscheck> Now, I need it to be able to check it every 5 seconds so i've use this code Code: [Select] header("Refresh: 5; URL=http://localhost:8080/php/script.php?file=test"); Here's my problem: The first 5 or 10 tries it should say "file not found". After the 10th try it should automatically say "file found". BUT it should also time out after like 50 tries and it hasn't found the file. But i don't know how to do this.. Hi
I'm having this issue, when i put an url who must show me records i have blank html page
<?php error_reporting(E_ALL | E_NOTICE); ini_set('display_errors', '1'); require_once 'database_connection.php'; $post=array( 'limit'=>(isset($_REQUEST['rows']))?$_REQUEST['rows']:'', 'page'=>(isset($_REQUEST['page']))?$_REQUEST['page']:'', 'orderby'=>(isset($_REQUEST['sidx']))?$_REQUEST['sidx']:'', 'orden'=>(isset($_REQUEST['sord']))?$_REQUEST['sord']:'', 'search'=>(isset($_REQUEST['_search']))?$_REQUEST['_search']:'', ); $se =""; if($post['search'] == 'true'){ $b = array(); $search['like']=elements(array('utilizador','email'),$_REQUEST); foreach($search['like'] as $key => $value){ if($value != false) $b[]="$key like '%$value%'"; } $search['where']=elements(array('nome','utilizador','email'),$_REQUEST); foreach($search['where'] as $key => $value){ if($value != false) $b[]="$key = '$value'"; } $se=" where ".implode(' and ',$b ); } $query = mysql_query("select count(*) as t from utilizador".$se); if(!$query) echo mysql_error(); $count = mysql_result($query,0); if( $count > 0 && $post['limit'] > 0) { $total_pages = ceil($count/$post['limit']); if ($post['page'] > $total_pages) $post['page']=$total_pages; $post['offset']=$post['limit']*$post['page'] - $post['limit']; } else { $total_pages = 0; $post['page']=0; $post['offset']=0; } $sql = "SELECT idutilizador, nome, utilizador, telefone, email, password FROM utilizador ".$se; if( !empty($post['orden']) && !empty($post['orderby'])) $sql .= " ORDER BY $post[orderby] $post[orden] "; if($post['limit'] && $post['offset']) $sql.=" limit $post[offset], $post[limit]"; elseif($post['limit']) $sql .=" limit 0,$post[limit]"; $query = mysql_query($sql); if(!$query) echo mysql_error(); $result = array(); $i = 0; while($row = mysql_fetch_object($query)){ $result[$i]['id']=$row->idutilizador; $result[$i]['cell']=array($row->idutilizador,$row->nome,$row->utilizador,$row->telefone,$row->email,$row->password); $i++; } $json = new stdClass(); $json->rows=$result; $json->total=$total_pages; $json->page=$post['page']; $json->records=$count; echo json_encode($json); function elements($items, $array, $default = FALSE) { $return = array(); if ( ! is_array($items)){ $items = array($items); } foreach ($items as $item){ if (isset($array[$item])){ $return[$item] = $array[$item]; }else{ $return[$item] = $default; } } return $return; } ?>*Update It works if i put $result[$i]['cell']=array($row->idutilizador,$row->telefone,$row->email,$row->password);So i'm think it's because in $nome(ex: Luis Miguel) and $utlizador(ex Susana Maria) don't accept this (space between words) it is correct? Edited by alphasil, 19 January 2015 - 08:54 AM. I have sent email successfully.Now i want php code to get response after sending email i.e whether it is opened,bounced,delievered.....so on can anyone help me |