xp-user
Goto Top

Smarty mit if contains

Hallo zusammen,

Ich versuche mich mit einer if Abfrage alle .ru Adressen zu filtern.
Jedoch bin ich bis jetzt nur wenn ich die exakte Adresse eingebe Erfolgreich.

Das ganze soll mit Smarty realisiert werden.

{if $domain eq "domain.ru"}
<h4>Domain mit TLD .ru sind nicht möglich</h4>{/if}

Wie muss die Zeile lauten, damit {if $domain "*.ru"} funktionieren würde?

Freundliche Grüsse
xp-User

Content-Key: 197426

Url: https://administrator.de/contentid/197426

Printed on: April 26, 2024 at 13:04 o'clock

Member: mayjalin
mayjalin Jan 22, 2013 at 10:50:11 (UTC)
Goto Top
Hallo,

ich würde es wohl so versuchen:

1. Client IP ermitteln
2. Namensauflösung auf die IP machen
3. TLD auschneiden
4. IF Abfrage starten
5. Ergbnis via Variable an die index.php übergeben und dann ein SMARTY template entsprechende füllen.

Ist aber nur so eine Idee.
Member: xp-user
xp-user Jan 22, 2013 at 10:54:22 (UTC)
Goto Top
Danke für deine Antwort.

Allenfalls habe ich mich nicht klar genug ausgedrückt.

Ich benötige keine informationen bezüglich IP oder Nameserver. Ich muss in einer Datenbank die .ru Domains separat behandeln. Dazu wird mit einem Template File mittels if abfrage geschaut, ob eine Domain die Endung .ru hat, und dann eben der Text ausgegeben.
Member: xp-user
xp-user Jan 22, 2013 at 11:17:53 (UTC)
Goto Top
Jetzt habe ich zumindest eine Teillösung.

{if $domain|strstr:".ru"}

Das funktioniert schon mal. Wenn ich jetzt jedoch ".ru" OR ".yu" haben möchte, dann steh ich wieder auf dem Schlauch...
Member: mayjalin
mayjalin Jan 22, 2013 updated at 11:28:57 (UTC)
Goto Top
Hallo,

mach es Dir doch nicht so schwer mit SMARTY, du hast doch PHP dahinter.

1. Client IP ermitteln
<?php
$_SERVER['REMOTE_ADDR'] z.b. 173.194.69.94 (kommt von www.google.ru)
?>

2. NS Lookup auf die IP
<?php
$REMOTE_ADDR_NAME = shell_exec("nslookup ".$_SERVER['REMOTE_ADDR']);

\\ $REMOTE_ADDR_NAME = www.google.ru


$TLD_mit_=unkt = substr($REMOTE_ADDR_NAME, strrpos($REMOTE_ADDR_NAME, '.'));
?>

3. TLD ausschneiden
<?php
\\ $REMOTE_ADDR_NAME = www.google.ru

$TLD_mit_Punkt = substr($REMOTE_ADDR_NAME, strrpos($REMOTE_ADDR_NAME, '.'));
?>

4. IF Abfrage starten
<?php
if ($TLD_mit_Punkt == '.ru') {
--> Datenbank RU
} else {
--> Datenbnak nicht RU
}
?>

5. Ergebnisse via Variable übergeben
<?php
foreach...
?>
Member: xp-user
xp-user Jan 22, 2013 at 11:32:03 (UTC)
Goto Top
Danke für die Antwort. Das ist sicherlich ein Ansatz, aber ich möchte das mit Smarty lösen.
Member: xp-user
xp-user Jan 22, 2013 at 11:37:02 (UTC)
Goto Top
Natürlich könnte ich

{if $domain|strstr:".ru"}
blablabla {/if}

{if $domain|strstr:".yu"}
blablabla {/if}

machen, aber dass müsste sicherlich auch in einer Zeile möglich sein.
Member: xp-user
xp-user Jan 22, 2013 at 12:25:25 (UTC)
Goto Top
Ok die Lösung:

{if stristr($domain, '.ru')
or stristr($domain, 'yu')}
<h4>Domain mit TLD .ru sind nicht möglich</h4>{/if}
Member: Guenni
Guenni Jan 24, 2013 at 18:44:51 (UTC)
Goto Top
Hi xp-user,

statt mit if und or versch. TLDs zu vergleichen, kannst du die nicht erlaubten TLDs in einem Array speichern.

<?php
$ext_array = array('ru','yu','home');  

$domain = 'domain.home';  

if(in_array(substr($domain, strpos($domain, '.') + 1), $ext_array)){  
	echo 'Domains mit der TLD <b>"'.substr($domain,strpos($domain, '.') + 1).'" </b> sind nicht möglich';  
}
?>

So kannst du die Liste deiner TLDs verwalten, ohne jedes mal die Abfrage zu ändern.

Gruß
Günni
Member: xp-user
xp-user Jan 25, 2013 at 06:00:51 (UTC)
Goto Top
Vielen Dank, das werd ich mir anschauen. face-smile