Ik probeer met behulp van isset() t bepalen wat de variabelen moeten doorgeven.
if(isset($_POST['url'])){
$url = $_POST['url'];
$link = '<a href=\"".$_POST['url']."\" unfocus=\"this.blur()\"><i class=\"fab fa-globe\"></i></a>';
}
else{
$url = '';
$link = '';
}
Het probleem is dat als 'url' niet is ingevuld toch de link wordt doorgegeven die onder de 'if' voorwaarde staat.
Zit ie d'r echt niet in, of is ie gewoon leeg (lege string)? Alleen als ie d'r echt niet in zit (of null is - maar dat gaat niet bij een platte POST) zal isset() false geven. Doe anders een var_dump($_POST), dan zie je meteen van welk type ie is.
Anders kun je ook:
if($_POST['url'] ?? null){
...
Dan geldt de if alleen als de "url" er in zit *en* niet leeg is.
Het lijkt mij echter niet bepaald een goed ontwerpprincipe om POST-data zo direct te gebruiken, mogelijk voor weergave op een webpagina?
Mogelijk kun je dit dus ook anders ontwerpen.
Ik weet niet precies hoe je $url en $link verder gebruikt? Wat probeer je precies te bereiken met het bovenstaande stuk code?
En ja, wat @Rob zegt dus. Als in je if-statement de verkeerde afslag wordt genomen dan is je POST data mogelijk (niet) leeg wanneer je dit wel zou verwachten of andersom.
De bovenstaande constructie levert nog steeds een notice op omdat het niet gegarandeerd is dat $_POST['url'] bestaat.
Gebruik anders empty()? Die voert beide controles in één keer uit. En als je dan de delen in het if- en else-blok omdraait heb je niet eens een negatie (!) nodig. Of gebruik de aanpak van @Rob.
Idealiter produceert de verwerking van het formulier verder geen enkele (zichtbare) output (op het scherm) en verwijs je de gebruiker na afloop direct door met een Location-header zodat je het POST/redirect/GET-patroon volgt.