Ingo Turski: Kann mir jemand den Unterschied erklären

Beitrag lesen

Hi,

if ((isset ($_GET['keywords']) && empty ($_GET['keywords'])) && (isset ($_GET['pfrom']) && empty ($_GET['pfrom'])) && (isset ($_GET['pto']) && empty ($_GET['pto']))) {
$errorno += 1;
$error = 1;
}
elseif (isset ($_GET['keywords']) && empty ($_GET['keywords']) && !(isset ($_GET['pfrom'])) && !(isset ($_GET['pto']))) {
$errorno += 1;
$error = 1;
}


>   
> 1. Ich versteh leider beim besten Willen nicht was der Unterschied zwischen dem ersten if und dem zweiten elseif ist.  

Der wurde Dir ja schon genannt.  
  

> 3. Warum schreibt er immer zuerst isset() um danach zu fragen ob es empty() ist?  

weil er keine wirkliche Ahnung von PHP hat - allerdings im Gegensatz zu vielen Script-Kiddies nicht auf die serverseitige Deaktivierung von Fehler-Notices setzt und das Vorhandensein der Variablen prüfen will.  
  
Würde er if($\_GET['keywords']) prpfen, gäbe es ggfls. eine solche Notice, wenn in der URL kein ?keywords enthalten ist.  
if(empty($\_GET['keywords'])) prüft, ob die Variable vorhanden \*und\* nicht leer ist.  
if(isset($\_GET['keywords'])) ist daher überflüssig.  
  
Aber genauer betrachtet ist der ganze Code Murks.  
$errorno += 1; $error = 1; soll gesetzt werden, wenn ?keywords in der URL steht, aber leer ist (also nicht ?keywords=xxx), und die weiteren Parameter 'pfrom' und 'pto' nicht vorhanden oder leer sind. Das geht viel einfacher mit:  
~~~php
  
if( isset($_GET['keywords']) && empty($_GET['keywords']) && empty($_GET['pfrom']) && empty($_GET['pto']) ) {  
  $errorno += 1; $error = 1;  
}  

Wobei mir der Sinn dieser Abfrage überaus nerkwürdig vorkommt. Ich fürchte, dass Du es da mit einem ziemlich unausgereiften Schgript zu tun hast...

freundliche Grüße
Ingo