From ff687e7e30b7c671a7593c11718d87752a3e63b6 Mon Sep 17 00:00:00 2001 From: Gary Date: Thu, 12 Jun 2025 15:24:04 +0100 Subject: [PATCH 01/10] removed deadlinks from images --- projects.php | 80 ++++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/projects.php b/projects.php index 02ac450..a031957 100644 --- a/projects.php +++ b/projects.php @@ -24,7 +24,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Expert roof repairs with long-lasting results.

+

Expert roof repairs with long-lasting results.

@@ -36,7 +36,7 @@ include_once $URlcorrection . "includes/nav.php";
-

New roof installation with premium materials.

+

New roof installation with premium materials.

@@ -48,7 +48,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Emergency roofing services

+

Emergency roofing services

@@ -60,7 +60,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Full roof replacements with workmanship guarantee.

+

Full roof replacements with workmanship guarantee.

@@ -73,7 +73,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Tiled roof repairs and replacements done right

+

Tiled roof repairs and replacements done right

@@ -85,7 +85,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Slating and tiling specialists since 2003.

+

Slating and tiling specialists since 2003.

@@ -97,7 +97,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Weatherproofing your home with care.

+

Weatherproofing your home with care.

@@ -109,7 +109,7 @@ include_once $URlcorrection . "includes/nav.php";
-

No job too big or small – we handle it all

+

No job too big or small – we handle it all

@@ -122,7 +122,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Quality fascia and soffit installations.

+

Quality fascia and soffit installations.

@@ -134,7 +134,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Free roofing inspections with no obligation.

+

Free roofing inspections with no obligation.

@@ -146,7 +146,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Trusted by homeowners across the UK

+

Trusted by homeowners across the UK

@@ -158,7 +158,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Keeping your roof strong through every season

+

Keeping your roof strong through every season

@@ -170,7 +170,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Eco-friendly roofing options available.

+

Eco-friendly roofing options available.

@@ -182,7 +182,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Insured, certified, and experienced roofing professionals.

+

Insured, certified, and experienced roofing professionals.

@@ -194,7 +194,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Storm damage? We’ll fix it fast.

+

Storm damage? We’ll fix it fast.

@@ -206,7 +206,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Leadwork services done with precision

+

Leadwork services done with precision

@@ -218,7 +218,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Storm damage? We’ll fix it fast.

+

Storm damage? We’ll fix it fast.

@@ -230,7 +230,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Protect your investment with our roof care.

+

Protect your investment with our roof care.

@@ -242,7 +242,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Honest advice, no hidden costs

+

Honest advice, no hidden costs

@@ -254,7 +254,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Restoring roofs to their former glory

+

Restoring roofs to their former glory

@@ -266,7 +266,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Your local roofing experts, always nearby

+

Your local roofing experts, always nearby

@@ -278,7 +278,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Pitched roofing that stands the test of time

+

Pitched roofing that stands the test of time

@@ -290,7 +290,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Fixing leaks fast with expert solutions

+

Fixing leaks fast with expert solutions

@@ -302,7 +302,7 @@ include_once $URlcorrection . "includes/nav.php";
-

All work backed by full warranties

+

All work backed by full warranties

@@ -314,7 +314,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Custom roofing tailored to your property

+

Custom roofing tailored to your property

@@ -326,7 +326,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Safe, efficient scaffolding for every project

+

Safe, efficient scaffolding for every project

@@ -338,7 +338,7 @@ include_once $URlcorrection . "includes/nav.php";
-

We use only trusted, high-quality materials

+

We use only trusted, high-quality materials

@@ -350,7 +350,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Heritage roofing with traditional craftsmanship

+

Heritage roofing with traditional craftsmanship

@@ -362,7 +362,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Detailed quotes with clear timelines

+

Detailed quotes with clear timelines

@@ -374,7 +374,7 @@ include_once $URlcorrection . "includes/nav.php";
-

A roof you can count on, year after year

+

A roof you can count on, year after year

@@ -386,7 +386,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Customer satisfaction is our top priorit

+

Customer satisfaction is our top priority

@@ -398,7 +398,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Roofing excellence from start to finish

+

Roofing excellence from start to finish

@@ -410,7 +410,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Craftsmanship you can see in every detail

+

Craftsmanship you can see in every detail

@@ -422,7 +422,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Your peace of mind starts at the top

+

Your peace of mind starts at the top

@@ -434,7 +434,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Proudly raising the standards in roofing

+

Proudly raising the standards in roofing

@@ -446,7 +446,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Dependable service from a name you can trust

+

Dependable service from a name you can trust

@@ -458,7 +458,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Built on integrity, delivered with care

+

Built on integrity, delivered with care

@@ -470,7 +470,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Every job finished to the highest standard

+

Every job finished to the highest standard

@@ -482,7 +482,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Attention to detail from start to finish

+

Attention to detail from start to finish

@@ -494,7 +494,7 @@ include_once $URlcorrection . "includes/nav.php";
-

Where quality meets reliability

+

Where quality meets reliability

From 4e6f555e82e311993db997b7ae2eebc22bf036e2 Mon Sep 17 00:00:00 2001 From: Gary Date: Fri, 13 Jun 2025 11:57:24 +0100 Subject: [PATCH 02/10] added contact bar on home page with call us now button and request a quote button --- includes/header.php | 1 + index.php | 22 ++++++++++++++++++++++ sections/projects.php | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/includes/header.php b/includes/header.php index 9834929..ba047c4 100644 --- a/includes/header.php +++ b/includes/header.php @@ -36,6 +36,7 @@

+

diff --git a/index.php b/index.php index 8913392..0fd267b 100644 --- a/index.php +++ b/index.php @@ -12,6 +12,28 @@ include_once $URLcorrection . "includes/nav.php"; include_once $URLcorrection . "sections/about-us.php"; include_once $URLcorrection . "sections/counter.php"; include_once $URLcorrection . "sections/services-3.php"; +?> + +
+
+
+
+

Contact Us!

+

Don't compromise on the most vital part of your home. Contact Warmseal today for a free, no-obligation survey and quotation for your new roof, re-roof, or flat roofing project. Let us provide a durable, beautiful roof that protects your investment for decades to come.

+ +
+
+
+
+ + -
+
Our From ac06ac5832bc903e5352a7082521434e8c011b60 Mon Sep 17 00:00:00 2001 From: Gary Date: Fri, 13 Jun 2025 12:03:44 +0100 Subject: [PATCH 03/10] number added to index page --- index.php | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/index.php b/index.php index 0fd267b..0eafe53 100644 --- a/index.php +++ b/index.php @@ -18,16 +18,12 @@ include_once $URLcorrection . "sections/services-3.php";
-

Contact Us!

+ + +

Call Us Now: 01254492373

+

Don't compromise on the most vital part of your home. Contact Warmseal today for a free, no-obligation survey and quotation for your new roof, re-roof, or flat roofing project. Let us provide a durable, beautiful roof that protects your investment for decades to come.

- +

Request a New Roof Quote

From 63b2a55481e334702b9422c7abfcb0f1d617a41c Mon Sep 17 00:00:00 2001 From: Gary Date: Mon, 16 Jun 2025 09:48:18 +0100 Subject: [PATCH 04/10] updated text and button text on contact us bar --- index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index 0eafe53..f24067e 100644 --- a/index.php +++ b/index.php @@ -22,8 +22,8 @@ include_once $URLcorrection . "sections/services-3.php";

Call Us Now: 01254492373

-

Don't compromise on the most vital part of your home. Contact Warmseal today for a free, no-obligation survey and quotation for your new roof, re-roof, or flat roofing project. Let us provide a durable, beautiful roof that protects your investment for decades to come.

-

Request a New Roof Quote

+

Don't compromise on the most vital part of your home. Contact Warmseal today for a free, no-obligation survey and quotation for your roofing project. Let us provide a durable, beautiful roof that protects your investment for decades to come.

+

Request a Quote

From 1de4969e828ce9335449485a7b1343fea0ba039e Mon Sep 17 00:00:00 2001 From: Gary Date: Tue, 17 Jun 2025 11:47:48 +0100 Subject: [PATCH 05/10] updated contact email --- contact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contact.php b/contact.php index d41a873..e161b0e 100644 --- a/contact.php +++ b/contact.php @@ -30,7 +30,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($captcha_input !== $_SESSION['captcha']['answer']) { echo "
Incorrect CAPTCHA answer. Please try again.
"; } else { - $to = "info@warmseal-roofing.co.uk"; + $to = "enquiries@warmseal-roofing.co.uk"; $website_name = "Warmseal Roofing contact"; $from_email = "noreply@" . $_SERVER['HTTP_HOST']; $headers = "From: " . $website_name . " <" . $from_email . ">" . "\r\n" . From da306f598b987a2e4035a3ce4fb7f1e2f13388a3 Mon Sep 17 00:00:00 2001 From: Gary Date: Tue, 17 Jun 2025 11:50:25 +0100 Subject: [PATCH 06/10] testing changes to contact form --- contact.php | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/contact.php b/contact.php index e161b0e..fd934d6 100644 --- a/contact.php +++ b/contact.php @@ -10,14 +10,10 @@ include_once $URlcorrection . "includes/header.php"; include_once $URlcorrection . "includes/banner.php"; include_once $URlcorrection . "includes/nav.php"; -// Generate a new CAPTCHA question if not set -if (!isset($_SESSION['captcha'])) { - $_SESSION['captcha'] = [ - 'num1' => rand(1, 10), - 'num2' => rand(1, 10), - 'answer' => $_SESSION['captcha']['num1'] + $_SESSION['captcha']['num2'] - ]; -} +// Generate CAPTCHA numbers +$num1 = rand(1, 10); +$num2 = rand(1, 10); +$captchaAnswer = $num1 + $num2; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = trim($_POST['name']); @@ -52,13 +48,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { } } - // Generate a new CAPTCHA for the next submission AFTER processing the form - $_SESSION['captcha'] = [ - 'num1' => rand(1, 10), - 'num2' => rand(1, 10), - 'answer' => $_SESSION['captcha']['num1'] + $_SESSION['captcha']['num2'] - ]; -} + ?> From 34cd480bd5e8183d55d95b63f7e99553a040c8af Mon Sep 17 00:00:00 2001 From: Gary Date: Tue, 17 Jun 2025 11:50:49 +0100 Subject: [PATCH 07/10] reverting --- contact.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/contact.php b/contact.php index fd934d6..e7a3ca4 100644 --- a/contact.php +++ b/contact.php @@ -48,7 +48,13 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { } } - + // Generate a new CAPTCHA for the next submission AFTER processing the form + $_SESSION['captcha'] = [ + 'num1' => rand(1, 10), + 'num2' => rand(1, 10), + 'answer' => $_SESSION['captcha']['num1'] + $_SESSION['captcha']['num2'] + ]; +} ?> From 8f0dab9da56665d5889259aa2b59e4f021dfe4d1 Mon Sep 17 00:00:00 2001 From: Gary Date: Tue, 17 Jun 2025 11:53:55 +0100 Subject: [PATCH 08/10] testing new contact form code --- contact.php | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/contact.php b/contact.php index e7a3ca4..d98bac7 100644 --- a/contact.php +++ b/contact.php @@ -15,24 +15,31 @@ $num1 = rand(1, 10); $num2 = rand(1, 10); $captchaAnswer = $num1 + $num2; -if ($_SERVER["REQUEST_METHOD"] == "POST") { +if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['submit'])) { $name = trim($_POST['name']); $email = trim($_POST['email']); $phone = trim($_POST['phone']); $subject = trim($_POST['subject']); $message = trim($_POST['message']); $captcha_input = isset($_POST['captcha']) ? (int)$_POST['captcha'] : 0; + $submittedAnswer = isset($_POST['captcha_answer']) ? (int)$_POST['captcha_answer'] : null; - if ($captcha_input !== $_SESSION['captcha']['answer']) { - echo "
Incorrect CAPTCHA answer. Please try again.
"; + if ($captcha_input !== $submittedAnswer) { + $errorMessage = "Incorrect CAPTCHA answer. Please try again."; + // Store form data for re-population + $storedName = $name; + $storedEmail = $email; + $storedPhone = $phone; + $storedSubject = $subject; + $storedMessage = $message; } else { - $to = "enquiries@warmseal-roofing.co.uk"; - $website_name = "Warmseal Roofing contact"; + $to = " enquiries@warmseal-roofing.co.uk"; + $website_name = "Warmseal contact"; $from_email = "noreply@" . $_SERVER['HTTP_HOST']; $headers = "From: " . $website_name . " <" . $from_email . ">" . "\r\n" . "Reply-To: " . $name . " <" . $email . ">" . "\r\n" . "X-Mailer: PHP/" . phpversion(); - $body = "You have received a new message from Warmseal Roofing Contact form:\n\n" . + $body = "You have received a new message from Bedford Wealth Contact form:\n\n" . "Name: " . $name . "\n" . "Email: " . $email . "\n"; if (!empty($phone)) { @@ -42,20 +49,29 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { "Message:\n" . $message; if (mail($to, 'New Message from ' . $website_name, $body, $headers)) { - echo "
Thank you for contacting us. We will get back to you shortly.
"; + header("Location: submission"); + exit(); } else { - echo "
There was an error sending your message. Please try again.
"; + $errorMessage = "There was an error sending your message. Please try again."; + // Store form data for re-population + $storedName = $name; + $storedEmail = $email; + $storedPhone = $phone; + $storedSubject = $subject; + $storedMessage = $message; } } - - // Generate a new CAPTCHA for the next submission AFTER processing the form - $_SESSION['captcha'] = [ - 'num1' => rand(1, 10), - 'num2' => rand(1, 10), - 'answer' => $_SESSION['captcha']['num1'] + $_SESSION['captcha']['num2'] - ]; +} else { + // Initialize stored data as empty on initial load + $storedName = ''; + $storedEmail = ''; + $storedPhone = ''; + $storedSubject = ''; + $storedMessage = ''; + $errorMessage = null; } + ?>
From 93224850f87ce6cf691fe161a0703fb70e2ad2df Mon Sep 17 00:00:00 2001 From: Gary Date: Tue, 17 Jun 2025 11:55:05 +0100 Subject: [PATCH 09/10] reverting back --- contact.php | 58 +++++++++++++++++++++-------------------------------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/contact.php b/contact.php index d98bac7..e161b0e 100644 --- a/contact.php +++ b/contact.php @@ -10,36 +10,33 @@ include_once $URlcorrection . "includes/header.php"; include_once $URlcorrection . "includes/banner.php"; include_once $URlcorrection . "includes/nav.php"; -// Generate CAPTCHA numbers -$num1 = rand(1, 10); -$num2 = rand(1, 10); -$captchaAnswer = $num1 + $num2; +// Generate a new CAPTCHA question if not set +if (!isset($_SESSION['captcha'])) { + $_SESSION['captcha'] = [ + 'num1' => rand(1, 10), + 'num2' => rand(1, 10), + 'answer' => $_SESSION['captcha']['num1'] + $_SESSION['captcha']['num2'] + ]; +} -if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['submit'])) { +if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = trim($_POST['name']); $email = trim($_POST['email']); $phone = trim($_POST['phone']); $subject = trim($_POST['subject']); $message = trim($_POST['message']); $captcha_input = isset($_POST['captcha']) ? (int)$_POST['captcha'] : 0; - $submittedAnswer = isset($_POST['captcha_answer']) ? (int)$_POST['captcha_answer'] : null; - if ($captcha_input !== $submittedAnswer) { - $errorMessage = "Incorrect CAPTCHA answer. Please try again."; - // Store form data for re-population - $storedName = $name; - $storedEmail = $email; - $storedPhone = $phone; - $storedSubject = $subject; - $storedMessage = $message; + if ($captcha_input !== $_SESSION['captcha']['answer']) { + echo "
Incorrect CAPTCHA answer. Please try again.
"; } else { - $to = " enquiries@warmseal-roofing.co.uk"; - $website_name = "Warmseal contact"; + $to = "enquiries@warmseal-roofing.co.uk"; + $website_name = "Warmseal Roofing contact"; $from_email = "noreply@" . $_SERVER['HTTP_HOST']; $headers = "From: " . $website_name . " <" . $from_email . ">" . "\r\n" . "Reply-To: " . $name . " <" . $email . ">" . "\r\n" . "X-Mailer: PHP/" . phpversion(); - $body = "You have received a new message from Bedford Wealth Contact form:\n\n" . + $body = "You have received a new message from Warmseal Roofing Contact form:\n\n" . "Name: " . $name . "\n" . "Email: " . $email . "\n"; if (!empty($phone)) { @@ -49,28 +46,19 @@ if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['submit'])) { "Message:\n" . $message; if (mail($to, 'New Message from ' . $website_name, $body, $headers)) { - header("Location: submission"); - exit(); + echo "
Thank you for contacting us. We will get back to you shortly.
"; } else { - $errorMessage = "There was an error sending your message. Please try again."; - // Store form data for re-population - $storedName = $name; - $storedEmail = $email; - $storedPhone = $phone; - $storedSubject = $subject; - $storedMessage = $message; + echo "
There was an error sending your message. Please try again.
"; } } -} else { - // Initialize stored data as empty on initial load - $storedName = ''; - $storedEmail = ''; - $storedPhone = ''; - $storedSubject = ''; - $storedMessage = ''; - $errorMessage = null; -} + // Generate a new CAPTCHA for the next submission AFTER processing the form + $_SESSION['captcha'] = [ + 'num1' => rand(1, 10), + 'num2' => rand(1, 10), + 'answer' => $_SESSION['captcha']['num1'] + $_SESSION['captcha']['num2'] + ]; +} ?> From e93cde8e3939e88df8af27e26b42a4a087dcf6fb Mon Sep 17 00:00:00 2001 From: Gary Date: Tue, 17 Jun 2025 11:57:05 +0100 Subject: [PATCH 10/10] another test --- contact.php | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/contact.php b/contact.php index e161b0e..c7baea9 100644 --- a/contact.php +++ b/contact.php @@ -10,25 +10,35 @@ include_once $URlcorrection . "includes/header.php"; include_once $URlcorrection . "includes/banner.php"; include_once $URlcorrection . "includes/nav.php"; -// Generate a new CAPTCHA question if not set -if (!isset($_SESSION['captcha'])) { - $_SESSION['captcha'] = [ - 'num1' => rand(1, 10), - 'num2' => rand(1, 10), - 'answer' => $_SESSION['captcha']['num1'] + $_SESSION['captcha']['num2'] - ]; +// Function to generate a new CAPTCHA +function generateCaptcha() +{ + $num1 = rand(1, 10); + $num2 = rand(1, 10); + $answer = $num1 + $num2; + return ['num1' => $num1, 'num2' => $num2, 'answer' => $answer]; } +// Initialize CAPTCHA for the first load +$captcha = generateCaptcha(); +$captcha_question = $captcha['num1'] . " + " . $captcha['num2'] . " = ?"; +$captcha_correct_answer = $captcha['answer']; + if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = trim($_POST['name']); $email = trim($_POST['email']); $phone = trim($_POST['phone']); $subject = trim($_POST['subject']); $message = trim($_POST['message']); - $captcha_input = isset($_POST['captcha']) ? (int)$_POST['captcha'] : 0; + $captcha_input = isset($_POST['captcha_user_input']) ? (int)$_POST['captcha_user_input'] : 0; + $captcha_expected_answer = isset($_POST['captcha_hidden_answer']) ? (int)$_POST['captcha_hidden_answer'] : 0; - if ($captcha_input !== $_SESSION['captcha']['answer']) { + if ($captcha_input !== $captcha_expected_answer) { echo "
Incorrect CAPTCHA answer. Please try again.
"; + // Re-generate CAPTCHA for a new attempt + $captcha = generateCaptcha(); + $captcha_question = $captcha['num1'] . " + " . $captcha['num2'] . " = ?"; + $captcha_correct_answer = $captcha['answer']; } else { $to = "enquiries@warmseal-roofing.co.uk"; $website_name = "Warmseal Roofing contact"; @@ -47,19 +57,19 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { if (mail($to, 'New Message from ' . $website_name, $body, $headers)) { echo "
Thank you for contacting us. We will get back to you shortly.
"; + // Re-generate CAPTCHA after successful submission + $captcha = generateCaptcha(); + $captcha_question = $captcha['num1'] . " + " . $captcha['num2'] . " = ?"; + $captcha_correct_answer = $captcha['answer']; } else { echo "
There was an error sending your message. Please try again.
"; + // Re-generate CAPTCHA for a new attempt if email sending fails + $captcha = generateCaptcha(); + $captcha_question = $captcha['num1'] . " + " . $captcha['num2'] . " = ?"; + $captcha_correct_answer = $captcha['answer']; } } - - // Generate a new CAPTCHA for the next submission AFTER processing the form - $_SESSION['captcha'] = [ - 'num1' => rand(1, 10), - 'num2' => rand(1, 10), - 'answer' => $_SESSION['captcha']['num1'] + $_SESSION['captcha']['num2'] - ]; } - ?>