problem with Heredoc

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
orangeapple
Forum Commoner
Posts: 70
Joined: Tue Jan 06, 2004 1:24 pm
Location: Geneva / Switzerland

problem with Heredoc

Post by orangeapple »

Hi,
Have been trying to solve this for a while. What's wrong with my Heredoc code ?

Error message :
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\program files\easyphp1-7\www\microsent\pages\pass_answer.php on line 116

line 116 = if (isset($_POST["changecheck"])) {
$changecheck = $_POST["changecheck"];
}


<?php

// create short variable names

$id = "";
$login=$_POST['login'];
$passe=$_POST['passe'];
$npasse=$_POST['npasse'];
$npasse2=$_POST['npasse2'];

$html=<<<ETO
<tr height="45">
<td width="150" height="45"></td>
<td width="214" height="45" valign="top" align="left" xpos="735"><img src="../media/logowebmediasoft.jpg" width="200" height="45" border="0"></td>
<td width="1" height="45"><spacer type="block" width="1" height="45"></td>
</tr>
<tr height="1" cntrlrow>
<td width="585" height="1"><spacer type="block" width="585" height="1"></td>
<td width="150" height="1"><spacer type="block" width="150" height="1"></td>
<td width="214" height="1"><spacer type="block" width="214" height="1"></td>
<td width="1" height="1"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td width="2" bgcolor="#c6b017"></td>
</tr>
<tr height="2">
<td width="2" height="2" bgcolor="#c6b017"></td>
<td height="2" bgcolor="#c6b017"></td>
<td width="2" height="2" bgcolor="#c6b017"></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<p></p>
</body>
</html>
ETO;

if (isset($_POST["changecheck"])) {
$changecheck = $_POST["changecheck"];
}
else
{ $changecheck = "0"; }



if ($changecheck != "1")
{
if (!$login || !$passe)
{
echo 'You must enter your login and password.<br />'
.'Please go back and try again.';
echo $html;
exit;
} }

else
{
if (!$login || !$passe || !$npasse || !$npasse2)
{
echo 'You must enter all the fields.<br />'
.'Please go back and try again.';
echo $html;
exit;
}
if ($npasse !== $npasse2)
{
echo 'You have made a mistake while entering the passwords.<br />'
.'Please go back and try again.';
echo $html;
exit;
}
}


$id = addslashes($id);
$login = addslashes($login);
$passe = addslashes($passe);
$npasse = addslashes($npasse);

@ $db = mysql_pconnect('localhost', 'root', '');

if (!$db)
{
echo 'Error: Could not connect to database. Please try again later.';
echo $html;
exit;
}

mysql_select_db('mailelani') or exit("Could not connect");

// checkin if the login exists
$sql_login_check = "SELECT * FROM passe WHERE login='$login'";
$result_login_check = mysql_query($sql_login_check);
$loginfound = mysql_num_rows($result_login_check);
// if login not found, note that and end
if ($loginfound < 1) {
echo "Login '" .$login ."' not found in the database !";
echo $html;
exit;
// if login does exist, continue with processing
}
else {


{
// checking if old password matches with the one in database
$sql_passe_check = "SELECT * FROM passe WHERE login='$login' and passe='$passe'";
$result_passe_check = mysql_query($sql_passe_check);
$passefound = mysql_num_rows($result_passe_check); }

//if checkbox not checked (=password)
if ($changecheck != "1")
{
if ($passefound < 1) {
echo "Password '" .$passe ."' didn't match with the password recorded in the database ! Please go back and try again.";
echo $html;
exit;
}

else {
echo " OK password correct !!!!";
echo $html;
exit;
}

}

else {

if ($passefound < 1) {
echo "Password '" .$passe ."' didn't match with the password recorded in the database ! Please go back and try again.";
echo $html;
exit;
}

else {
$query = "UPDATE passe SET passe = '{$npasse}' WHERE login = '{$login}' LIMIT 1" ;
$result = mysql_query($query);
echo $result ." password modified";
}}}

?>
User avatar
JayBird
Admin
Posts: 4524
Joined: Wed Aug 13, 2003 7:02 am
Location: York, UK
Contact:

Post by JayBird »

Nothing to do with your Heredoc.

I think the problem is here..

Code: Select all

else { 


{ 
// checking if old password matches with the one in database 
$sql_passe_check = "SELECT * FROM passe WHERE login='$login' and passe='$passe'"; 
$result_passe_check = mysql_query($sql_passe_check); 
$passefound = mysql_num_rows($result_passe_check); }
You have an extra opening curly brace from what i can see. Take one out after the else and see what happens.

Mark
User avatar
pickle
Briney Mod
Posts: 6445
Joined: Mon Jan 19, 2004 6:11 pm
Location: 53.01N x 112.48W
Contact:

Post by pickle »

In my experience, errors like that only appear around heredocs if you've got too any spaces before or after the final heredoc declaration. If you haven't already, check to see that there are absolutely no spaces either before or after "ETO;"
Real programmers don't comment their code. If it was hard to write, it should be hard to understand.
User avatar
orangeapple
Forum Commoner
Posts: 70
Joined: Tue Jan 06, 2004 1:24 pm
Location: Geneva / Switzerland

Post by orangeapple »

yessss!!!

there was a space before "ETO;"

Now it works !

Thanks a lot !!!
Post Reply