ruffo: Festen Wert anhängen

Hallo,

ich bitte als absoluter Einsteiger in PHP um euere Hilfe.

Für meine Nagios Intranetseite versuche ich ein PHP Script für eine Serversuche anzugleichen. Um die Suche für den Anwender zu vereinfachen, würde ich gerne die vorhandene Suche mit * als festen Wert anpassen. Dabei habe ich mir vorgestellt dass der Ausgabewert z.B. *test* alle Server mit den vorkommenden Zeichen "test" auflistet, was rein technisch in Nagios bestens funktioniert.
Es ist mir nach vielen Versuchen bisher nicht gelungen die * als festen Wert an die Ausgabe vorne und hiten anzuhängen

So ist der Ausgabewert zur Zeit
http://meinserver.com/nagios/cgi-bin/status.cgi?navbarsearch=&host=testserver

So soll der Ausgabe wert sein:
http://meinserver.com/nagios/cgi-bin/status.cgi?navbarsearch=&host=*testserver*

hier der Auszug aus site.html

<td width=60 height="18"></td>
    <td nowrap class="NavBarSearchItem" height="18" width="137" valign="bottom" align="left">
      <p style="word-spacing: 0; margin-top: 0; margin-bottom: 0">&nbsp;</p>
      <p style="word-spacing: 0; margin-top: 0; margin-bottom: 0"><b><font size="1">Direkte
      Serversuche:</font></b></p>
    </td>
  </tr>
  <tr>
    <td width=80 height="22"></td>
    <td nowrap height="22" width="137">
<form method="get" action="/nagios/cgi-bin/status.cgi" target="main">
    <p align="left">
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name="host" size='18' class="NavBarSearchItem" value="Server">

hier der Auszug aus der site.php

<div class="navbarsearch">
<form method="get" action="<?php echo $cfg["cgi_base_url"] ;?>/status.cgi" target="<?php echo $link_target;?>">
<fieldset>
<legend>Quick Search:</legend>
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name='host' size='15' class="NavBarSearchItem" >

Ich bin mir sicher, dass es für die Profis hier ein Klacks ist.

Vielen Dank

  1. Hi,

    hier der Auszug aus der site.php

    <div class="navbarsearch">
    <form method="get" action="<?php echo $cfg["cgi_base_url"] ;?>/status.cgi" target="<?php echo $link_target;?>">
    <fieldset>
    <legend>Quick Search:</legend>
    <input type='hidden' name='navbarsearch' value='1'>
    <input type='text' name='host' size='15' class="NavBarSearchItem" >

    Du müsstest dort wo $_POST['host'] ausgewertet wird das machen:

    $host = '*'.$_POST['host'].'*';

    und dann mit $host weiterarbeiten.

    MfG
    Naps

    1. Naps, danke für den Hinweis.
      Nochmal eine Rückfrage:

      An welcher Stelle genau wird $_POST['host'] denn ausgewertet? Oder wo muss ich die Variable als erstes setzen?  Ich habe schon ein paar Stellen in der site.php versucht, komme leider damit nicht weiter. Oder muss ich das in der site.html setzen? Habe leider zu wenig Erfahrung mit PHP um das richtig deuten zu können.

      Dank vorab und Grüße
      Ruffo

      Hi,

      hier der Auszug aus der site.php

      <div class="navbarsearch">
      <form method="get" action="<?php echo $cfg["cgi_base_url"] ;?>/status.cgi" target="<?php echo $link_target;?>">
      <fieldset>
      <legend>Quick Search:</legend>
      <input type='hidden' name='navbarsearch' value='1'>
      <input type='text' name='host' size='15' class="NavBarSearchItem" >

      Du müsstest dort wo $_POST['host'] ausgewertet wird das machen:

      $host = '*'.$_POST['host'].'*';

      und dann mit $host weiterarbeiten.

      MfG
      Naps

  2. Moin!

    Wenn es wirklich für alle Eingaben ist, dann musst Du /nagios/cgi-bin/status.cgi ändern. Das könnte für Dich schwierig sein, denn es sieht so aus als wäre dies binär und ich glaube nicht, dass Du C oder CPP kannst. Zudem könnten Deine Änderungen bei einem Update hinfällig sein und müssten jeweils erneuert werden. Den Quelltext zum ändern und übersetzen bekommst Du aber auf der Nagios-Webseite.

    Also bliebe Dir nur, mit Javascript zu hantieren:

    <form method="get" action="/nagios/cgi-bin/status.cgi" target="main" onsubmit="AddAsterixe('SearchHost')">  
    // Füge also den Funktionsaufruf via Event-Handler 'onsubmit' hinzu.  
      
    <input type='text' name="host" id="SearchHost" size='18' class="NavBarSearchItem" value="Server">  
    // Dein Formularfeld? Gib ihm noch eine ID mit auf den Weg.  
      
    //Alternative zum Aufruf via "onsubmit()":  
    //Du baust einen Button ein, der die gleiche Aufgabe erledigt. Sieht für mich vorteilhafter aus:  
    <input type="button" value="ähnliche finden" onclick="AddAsterixe('SearchHost')" />  
      
      
    <script type="text/javascript">
    
    function AddAsterixe(FormularfeldId) {  
    /*  
    Diese Funktion gibt dem adressierten Formularfeld einen * vor und nach dem aktuellen Inhalt,  
    sie gibt ein true zurück, dadurch sollte das Formular dann abgesendet werden.  
    */  
        document.getElementById(FormularfeldId).value='*' + document.getElementById(FormularfeldId).value + '*';  
        return true;  
    }
    

    </script>

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Moin!

      Moin!

      Wenn es wirklich für alle Eingaben ist, dann musst Du /nagios/cgi-bin/status.cgi ändern.

      Konkret die im Quelltext-Tarball verfügbare /cgi/status.c ist der Kandidat des Tages. Danach natürlich kompilieren und installieren.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix

    2. Danke Fastix,
      jetzt isses dank deiner Hilfe gelöst.Habe den input type= button gegen "hidden" ersetzt. Beim Auslösen der Suche wird die Eingabe automatisch zwischen zwei * gesetzt.

      Sieht jetzt im side.html so aus:
      <form method="get" action="/nagios/cgi-bin/status.cgi" target="main" onsubmit="AddAsterixe('SearchHost')">

      <p align="left">
      <input type='hidden' name='navbarsearch' value='1'>
      <input type='text' name="host" id="SearchHost" size='18' class="NavBarSearchItem" value="Server">
      <input type="hidden" onclick="AddAsterixe('SearchHost')" />
      <script type="text/javascript">
      function AddAsterixe(FormularfeldId) {
          document.getElementById(FormularfeldId).value='*' + document.getElementById(FormularfeldId).value + '*';
          return true;
      }
      </script>

      Tausend Dank!

      1. Hallo,

        jetzt isses dank deiner Hilfe gelöst.Habe den input type= button gegen "hidden" ersetzt. Beim Auslösen der Suche wird die Eingabe automatisch zwischen zwei * gesetzt.

        ziemlich mysteriös.

        <form method="get" action="/nagios/cgi-bin/status.cgi" target="main" onsubmit="AddAsterixe('SearchHost')">
        <input type='hidden' name='navbarsearch' value='1'>
        <input type='text' name="host" id="SearchHost" size='18' class="NavBarSearchItem" value="Server">
        <input type="hidden" onclick="AddAsterixe('SearchHost')" />
        <script type="text/javascript">
        function AddAsterixe(FormularfeldId) {
            document.getElementById(FormularfeldId).value='*' + document.getElementById(FormularfeldId).value + '*';
            return true;
        }
        </script>

        Etwas Wichtiges fehlt noch: Der submit-Button. Oder hast du den hier bewusst weggekürzt?
        Mysteriös finde ich vor allem den onclick-Handler auf einem hidden input. Wie willst du auf etwas klicken, das gar nicht dargestellt wird? :-)

        Ach so: Besucher, die Javascript nicht ausführen lassen, kommen natürlich nicht in den Genuss dieser automatischen Eingabe-Ergänzung. Deswegen hätte ich eine serverseitige Lösung auch schlauer gefunden.

        So long,
         Martin

        --
        You say, it cannot be love if it isn't for ever.
        But let me tell you: Sometimes, a single scene can be more to remember than the whole play.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(