Domain-Check mehrsprachig

CreativPur

Erfahrenes Mitglied
Hi, da bin ich mal wieder..

Ich habe eine mehrsprachige Webseite mit einem Domain-Check.

Mein Formular für den Domain-Check
PHP:
<form action="" method="post" name="domaincheck" onsubmit="return checking();">
    <input class="form-control form-control-sm" type="hidden" id="sprache_ausgabe" name="sprache_ausgabe" value="<?php echo $_GET['lang'] ?>">
    <div class="row"> 
        <div class="col-9 col-md-9">
            <input class="form-control form-control-sm" type="text" id="domain" name="domain" placeholder="<?php echo $lang->service_single_webseiten_arten->webseite_domain_text1; ?>" aria-label=".form-control-sm example" style="height:20px;font-size:13px">
        </div>
        <div class="col-3 col-md-3">
            <select  class="form-select form-select-sm" id="suffix" name="suffix" aria-label=".form-select-sm example" style="font-size:13px;">
            <option value=".de">.de</option>
            <option value=".eu">.eu</option>
            <option value=".com">.com</option>
            <option value=".net">.net</option>
            <option value=".org">.org</option>
            <option value=".fr">.fr</option>
            <option value=".uk">.uk</option>
            </select>
        </div>
        <div class="col-lg-12">
            <div id="domainstatus">
                &nbsp;
            </div>
            <br />
            <button type="submit" name="checksend" class="btn btn-primary btn-sm"><?php echo $lang->service_single_webseiten_arten->webseite_domain_text2; ?></button>
        </div>
    </div> 
</form>

Nachdem der Submit-Button geklickt wird, wird man auf die check.php Seite weiter geleitet..

PHP:
<?php
clearstatcache();
if(isset($_POST['domain']) && isset($_POST['suffix']))  {
  
    if (true === empty($_POST["domain"]))  {  die('Bitte Domain korrigieren!');  }
    if (true === empty($_POST["suffix"]))  {  die('Bitte die Domainendung ändern!');  }
 
    $domain  = strip_tags($_POST['domain']);
    $suffix  = strip_tags($_POST['suffix']);
  
    $domain  = idn_to_ascii($domain.$suffix);
    $search  = array('http://','www.','https://');
    $replace = array('', '', '');
    $domain = str_replace($search, $replace, $domain);
    $arrHost = gethostbynamel($domain);
  
    if(empty($arrHost))  {
      
    class language {
   public $data;
   function __construct($language) {
      $data = file_get_contents($language . ".json");
      $this->data = json_decode($data);
   }
   function translate() {
        return $this->data;
   }
}
  
$sprache  = 'de';
$language = new language($sprache);
$lang = $language->translate(); 
  
$lang1 = $lang->service_single_webseiten_arten->webseite_domain_text3; //Die Domain
$lang2 = $lang->service_single_webseiten_arten->webseite_domain_text4; // ist leider schon
$lang3 = $lang->service_single_webseiten_arten->webseite_domain_text5; //vergeben
$lang4 = $lang->service_single_webseiten_arten->webseite_domain_text6; //ist noch
$lang5 = $lang->service_single_webseiten_arten->webseite_domain_text7; // frei 
      
    echo "<span style='color:green'>".$lang1."</span><span style='color:#48d1cc'> ".$domain." </span><span style='color:green'>".$lang4." <strong>".$lang5."</strong></span>";
    }  else  {
      
    echo "<span style='color:red'>".$lang1."</span><span style='color:#48d1cc'> ".$domain." </span><span style='color:red'>".$lang2." <strong>".$lang3."</strong></span>";
      
    }
}
?>

Dies funktioniert auch wunderbar.
Die Ausgabe gibt mir folgenden Text
Wenn Domain Frei = Die Domain das_geisterhaus.de ist noch frei.
Wenn domain besetzt ist = Die Domain creativpur.de ist leider schon vergeben
Vorausgesetzt:

ich setzte $sprache = 'de';

wenn ich aber...
$sprache = $_POST['sprache_ausgabe'];,

welches ich ja im Formular mitgebe,
<input class="form-control form-control-sm" type="hidden" id="sprache_ausgabe" name="sprache_ausgabe" value="<?php echo $_GET['lang'] ?>">

funktioniert es nicht. Dann wird nur die eingegebene Domain ausgegeben.

Ich weis, dass es an dieser Stelle liegt.. $sprache = $_POST['sprache_ausgabe'];,

Ich bekomme keine Fehlermeldung und suche den Fehler schon 4 Tage lang
 
Wie oft habe ich dir das schon gepostet?

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Nein, das ist ja mein Problem.
Ich denke mal, das das clearstatcache(); ganz oben in der check.php etwas damit zu tun hat, oder ?
 
Du machst mich echt fertig! Es geht doch nicht nur um Fehlermeldungen! Siehe Punkt 5 von "Richtig debuggen"

Und hast du überhaupt das Error-Reporting hochgedreht? Das sehe ich nämlich nirgendwo.
 
Sorry, ich habbe in der check.php noch keine überprüfen durchgeführt..

Fehlermeldung!

Warning: Undefined array key "sprache_ausgabe" in /is/htdocs/wp13538449_2FWD4TITGV/www/CreativPur/CreativPur/1A_Musterwebseite/check.php on line 31


Warning
: file_get_contents(.json): Failed to open stream: No such file or directory in /is/htdocs/wp13538449_2FWD4TITGV/www/CreativPur/CreativPur/1A_Musterwebseite/check.php on line 23
 
Schreibe mal an den Anfang von check.php diese Zeilen:
PHP:
echo "<pre>";
var_dump($_POST);
die ("</pre>");
und poste die Ausgabe.
 
Da kommt folgendes an..

array(2) {
["domain"]=>
string(10) "hjkjhkjhkh"
["suffix"]=>
string(3) ".de"
}

Die Seite steht auf DE
Bei EN das gleiche Resultat

Also demnach kommt das $_POST['sprache_ausgabe'] gar nicht an ?
 
Zurück