如何使用URL中的某些字符串在PHP中显示消息?

如何使用URL中的某些字符串在PHP中显示消息?

问题描述:

I have WHMCS setup, and i am trying to make a message bubble that would show when someone access it with the specific link.

Like when someone access this link, they will see normal page - https://example.com/billing/clientarea.php?action=details

But if someone access https://example.com/billing/clientarea.php?action=details&status=incomplete

They will get a message.

I have already setup the message, and it is showing on the default link. But i do not know how to set it up on the 2nd link only? I am using WHMCS.

Can anyone guide me?

Code for message bubble.

<div class="alert alert-danger">
<strong>The following errors occurred:</strong>
<ul>
<li>Please enter your address and click on save to proceed. Once Saved, then only you will be able to access the client area.</li>
</ul>
</div>

EDIT: Solution Added

thanks a ton for your help @symlink, your method works on PHP, but for WHMCS/smarty php, it needs other code, a very simple code that too, lol.

{if $smarty.get.status eq incomplete} 
{include file="$template/includes/alert.tpl" type="info" msg="Please fill the form to continue with our services."}
{else} 
{/if}

If the $GET param exists, add a class to the message div that makes it appear:

PHP/HTML

<?php
    $class = "";
    if(isset($GET["status"]) && $GET["status"] === "incomplete"){
        $class = "show";
    }
?>

<div class="alert alert-danger <?php echo $class ?>"> 
    <strong>The following errors occurred:</strong> 
    <ul> 
        <li>Please enter your address and click on save to proceed. Once Saved, 
        then only you will be able to access the client area.</li> 
    </ul> 
</div> 

CSS

.alert.alert-danger{
    display: none;
}
.alert.alert-danger.show{
    display: block;
}

If you edit templates, it makes it harder to keep your WHMCS up to date. I would recommend using a hook to output some JS to inject the appropriate alert to your page.

Perhaps the ClientAreaFooterOutput hook point? https://developers.whmcs.com/hooks-reference/output/#clientareafooteroutput

Something like:

<?php

add_hook('ClientAreaFooterOutput', 1, function($vars) {
    $status = App::getFromRequest('status'); //This is handy and sanitised 
    return <<<HTML
jQuery(document).on('ready', function() {
    if ('{$status}' == 'incomplete') {
        //Add your code here to output the alert where you wish
    }
});
HTML;
});