By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
438,349 Members | 1,353 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 438,349 IT Pros & Developers. It's quick & easy.

PHP and XML help

P: 22
This is my delimna. I'm trying to post information over to google. The code POSTS in these scenarios...if I define all the variables inside of the script and put the appropriate values in the XML and send the data over and if I read the data from a .csv file into an array and put the approriate values in the XML and send it over to google.

Now being that that's the case. I needed to create an interface for my code so now I post user inputted data from a form to a script. Well now the script doesn't work and I keep getting one of the two XML errors org.xml.sax.SAXParseException: Premature end of file. or org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.

Now I've read forums that state that the first error comes about because the content is not complete and second error comes about because there are spaces before the prolog of XML.

Either way it's the same code and it should work. The interesting thing about this is that other people have run this script and it works for them.

Can someone help me to resolve this issue. My code is below:

[PHP]<?php
session_start();
$domain = $_SESSION['domain'];
$token = $_SESSION['token'];

$ourFileName = "create.xml";
$fh = fopen($ourFileName, 'r') or die("Can't open file");
$content = fread($fh, filesize($ourFileName));



$content2=trim($content);
$data="[user]";
$data2=trim($_POST['username']);
$userdata = str_replace($data, $data2, $content2);

$data3="[pass]";
$data4=trim($_POST['pass2']);
$userdata2 = str_replace($data3, $data4, $userdata);

$data5="[family]";
$data6=trim($_POST['family2']);
$userdata3 = str_replace($data5, $data6, $userdata2);

$data7="[given]";
$data8=trim($_POST['given2']);
$userdata4 = str_replace($data7, $data8, $userdata3);

$userdata5=trim(userdata4);

// echo $content;
$url = "https://www.google.com/a/feeds/$domain/user/2.0/";

//echo $url;

$useragent="Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
//$length = strlen($userdata4);
$length = strlen($content);
$header_array[0] = "Content-length: " . $length;
$header_array[1] = "Content-type: application/atom+xml";
$header_array[2] = "Accept: text/xml, application/xml, application/xhtml+xml, text/html";
$header_array[3] = "Authorization: GoogleLogin ". $token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_array);
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$result = curl_exec($ch);
curl_close($ch);
fclose($fh);
echo $result;

?>[/PHP]
Feb 26 '08 #1
Share this Question
Share on Google+
5 Replies


nomad
Expert 100+
P: 664
Question:
Your opening the xml file and you're only reading it.
Don't you want use W (write) or A (append) file

Or I might have missed something in your code.

nomad
Feb 26 '08 #2

P: 22
no I didn't go that route. I just use string replace. To insert the appropriate values.
Feb 26 '08 #3

P: 22
The file has this already pre formatted XML. Let me put the XML here for you:

[PHP]
<?xml version="1.0"?>
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006" version="1.0"/>
<atom:category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/apps/2006#user"/>
<apps:login userName="[user]" password="[pass]"/>
<apps:name familyName="[family]" givenName="[given]"/>
</atom:entry>
[/PHP]
Feb 26 '08 #4

nomad
Expert 100+
P: 664
no I didn't go that route. I just use string replace. To insert the appropriate values.
Somewhat new to php
can you please tell me how the String values are written to the xml file.

thanks
nomad
Feb 26 '08 #5

P: 22
The concept was to get the information out of the xml file and store into the string $content. Using string replace I replace the information in the string that has [user], [pass], [given] and [family] with the information that came in from the form.
Feb 26 '08 #6

Post your reply

Sign in to post your reply or Sign up for a free account.