Probleme von Umlauten mit Webserver und Datenbank?

N’Abend! 

Ich habe folgendes Problem, ich schreibe im Moment auf der Arbeit unsere Website komplett neu. Als Grundlage verwende ich Wordpress. Die Website ist relativ komplex gehalten, sprich mit Kundenzugang, der aus selbstgeschriebenen PHP Skripten besteht (Für den Login/Kontos verwendete ich das Plugin Simple WordPress Membership). Soweit so gut, das alles funktioniert auch ohne Probleme. Nachdem ich aber mithilfe des Plugins All-in-one WP Migration den Server wechselte (von einem lokalen System innerhalb unseres Netzwerkes auf einen Host-Europe Webserver, habe ich das Problem das Umlaute falsch angezeigt werden (�). Ich kann mir vorstellen das es daran liegt, dass die Datenbanken 2 Unterschiedliche Typen sind und verschiedene Charsets eingestellt hatten. Den Charset der neuen Datenbank habe ich testweise mal umgestellt, jedoch ohne Ergebnis. Wenn ich jedoch über ein Formular Umlaute in die Datenbank eintrage, erhalte ich in der Datenbank folgende Zeichen: O: Ö   A: Ã„  U: Ãœ    o: ö  a: ä  u: ü  

Frage ich jedoch diese Eintragungen ab, werden die Umlaute korrekt dargestellt. 

Die Importierten Datensätze, sprich die Datensätze die auf der Website so � dargestellt werden, werden in meinem Datenbank Management als korrekte Umlaute angezeigt. 

Server/Datenbank Details:

Ich kann mir vorstellen das der Fehler Server Seitig ist, jedoch fehlt mir die Idee wie ich diesen Fehler beheben kann.  

Vielen Dank für eure Hilfe im Voraus :) 

Viele Grüße 

Miro  

Bild zum Beitrag
Computer, HTML, programmieren, WordPress, Datenbank, MySQL, PHP, Webserver
Problem mit Docker?

Problem mit Docker

und zwar haut bei mir der Befehl

RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

nicht hin.

Ich erstelle ein Image über ein Dockerfile (docker build -t [name] .)

Das Image basierd auf debian:latest

Danach wird apt-get update & apt-get upgrade ausgeführt

Dann werden Komponenten installiert (sudo, apache2, php, cron, ...)

und wiederum danach werden die apache2 Konfigurierung angepasst das der Apache2-Server auf /webserver das DocumentRoot setzt

Soweit alles gut.

jetzt kann ich über den docker run befehl den parameter --mount hinzufügen und darüber ein externes Verzeichnis auf /webserver binden.

Bis hier her Funktioniert alles noch.

Jetzt wenn ich eine index.html aufrufe funktioniert das eine index.php funktioniert auch. Wenn ich jetzt jedoch in der .php Datei folgenden code Benutze(um auf MySql - Server zuzugreifen zu können):

      $mysqli = new mysqli("host_ip","bn","pw","tabelle");
      //echo mysqli_get_host_info($mysqli);
      if ($mysqli->connect_errno) {
          echo "Verbindung fehlgeschlagen: " . $mysqli->connect_error;
          return false;
      }else{
          return $mysqli;
      }

Kommt ein 500-ServerError.

Soweit ich es jetzt ergoogeln konnte muss ich zusätzlich den Port 3306(MySql-Port) Exposen und zusätzlich mit -p 3306:3306 in den docker run befehl einbauen.

Außerdem muss man antscheinend mit

RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

Das MySqli modul installieren & aktivieren.

Hier ist auch schon das Problem:

Wenn ich mit oben genannten befehl mein Image aus dem Dockerfile erstellen möchte kommt (wenn er an der Stelle mit "RUN docker-php..." ankommt):

RUN docker-php-ext-install mysqli
 ---> Running in bce06404a5ca
/bin/sh: 1: docker-php-ext-install: not found
The command '/bin/sh -c docker-php-ext-install mysqli' returned a non-zero code: 127

Und jetzt meine Frage wie kann ich diesen fehler Beheben, ich weiß leider nicht mehr weiter!

Für die vollständigkeit hier noch der docker run befehl(den ich benutze wenn ich das Funktionierende Image ohne "RUN docker-php-..." nutze):

docker run --name webserver \
-p 80:80 \
-p 3306:3306 \
--mount type=bind,source="/lokaler/pfad",destination=/webserver [name_des_images]
Computer, Technik, Apache, container, Image, MySQL, PHP, Port, Technologie, PDO, Docker, Spiele und Gaming
Pdf Tabelle in MySQL?

Hi,

folgendes Problem. Ich bin gerade dabei für meine Schule einen Vertretungplan neu zu Programmieren. Die Idee war es den Plan in einer MySql Datenbank zu speichern.

Etwa so

und ihn dann mit Php aus der Datenbank zu lesen und in eine HTML mit echo auszugeben. Der Teil funktioniert schonmal.

Sieht dann später ca. so aus. (Design bei weitem noch nicht fest.)

Der weiter Plan wäre dann z.b mit NodeJs Pushnachrichten an eine Vertretungsplan App zu schicken.

Jedenfalls funktionier das jetzige System an der Schule aber so, dass eine Lehrkraft, die für die Erstellung des Vertretungsplans zuständig ist, diesen in einer Anwendung erstellt, die zum einen anscheinend viele Vorteile bei der Erstellung hat (z.b kann man alle normalen Stundenpläne direkt einsehen und mit wenigen klicks den Plan erstellen), aber leider nur in PDF die Tabellen exportieren kann. Zurzeit wird die Pdf dann auf dem Server in eine png umgewandelt und mit php dargestellt. Da der Provider der Schulwebsite (webhosting (kein vServer oder ssh Zugriff)) php5 was z.b beim Login für den Vertretungplan noch benutzt wird einstellen wird und man alles eh auf php7 umschreiben muss, dachte ich diese modernisierung wäre auch gleich eine gute Idee.

Jedenfalls ist jetzt das Problem wie ich die Pdf Tabellen in Mysql schreiben kann.

(Mir ist natürlich bewusst das Tabellen bei PDF nicht mit Zeilen und spalten direkt kopiert werden können.)

Ein Programm mit Verwendung von irgendwelchen einfach librarys wäre auch kein Problem.

Hier nochmal ein Bild von der jetzigen Tabelle als PNG

(Alle verschiedenen Stufen also z.b 5,6,7 usw. müssten in eine Seperate MySQL Tabelle)

Danke für alle Antworten.

Bild zum Beitrag
Lässt sich irgendwie von PDF konvertieren und in MySQL schreiben 100%
Ein neues Programm zur Erstellung mit direktem MySQL sup schreibe 0%
Computer, Technik, PDF, Webseite, Datenbank, MySQL, OCR, PHP, Technologie, Abstimmung, Umfrage
[jQuery AJAX] echo mit HTML Content von PHP Datei ausgeben?

Okay, die Frage ist evtl ein bisschen kompliziert. Deshalb beschreibe ich das anhand eines Beispiels. Zuerst meine Dateien:

PHP (submit.php)

<?php
 $mail = $_GET['mail']; if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { echo "<div role=\"alert\">Ungültige E-Mail</div>"; } else { echo "<div role=\"alert\">Gültige E-Mail</div>"; }

?>

HTML (index.html)

<form id="myForm">
  <input type="email" name="mail" id="mail" placeholder="E-Mail Adresse"/>
  <input type="submit" name="check" id="check" value="Senden"/>
</form>
<script src="http://code.jquery.com/jquery-1.9.1.js"/> <script> $(function () { $('form').on('submit', function (e) { e.preventDefault(); $.ajax({ type: 'post', url: 'submit.php', data: $('form').serialize(),   success: function() {    //echo "Gültige E-Mail    } error: function() { //echo "Ungültige E-Mail" } }); }); }); </script>

Beschreibung:

Sobald das Formular abgesendet wurde, wird die E-Mail an die submit.php gesendet. In dieser wird überprüft, ob die E-Mail gültig ist und gibt dann das Ergebnis in Form von HTML-Code zurück.

Die Lösung mit alert will ich nicht. Es soll unterhalb der Form das Ergebnis stehen.

Wenn ich mit PHP

echo "<div role=\"alert\">Gültige E-Mail</div>";

ausgebe, dann steht das auch direkt in HTML dort (also nicht als PlainText).

Wie ist es also möglich, das Ergebnis der submit.php zu bekommen und in der index.html auszugeben?

Vielen Dank im Voraus!

Computer, Technik, HTML, Webseite, programmieren, JavaScript, AJAX, JQuery, PHP, Technologie
Problem mit MySQL wenn ich Apache2 über anderen Port verbinde?

Hallo,

heute habe ich ein kleines Problem,

und bevor ich eine moralpredigt bekomme das Man apache2 nur auf Port 80 und 443 benutzt:

"Ich weiß jedoch ist es sinnvoll den "Standartserver" (80/443) auf das verzeichnis /darf/jeder/sehen zu leiten und z.B. den "Home-Server" (8080) auf das verzeichnis /streng/geheim zu leiten"

Falls sich jetzt jemand Fragt wie ich das gemacht habe:

Terminal öffnen

cd /etc/apache2

nano ports.conf

hinzufügen von "Listen [DEIN_PORT]"

^X danach Y und ENTER

nano apache2.conf

danach unter den verzeichnisen einen Neuen eintrag beginnend mit "<Directory [/dein/streng/geheimes/verzeichnis]>" und anschließend mit den von dir gewünschten optionen versehen

^X danach Y und ENTER

dann in das Verzeichnis sites-enabled wechseln

cd /sites-enabled

danach entweder eine neue datei mit endung ".conf" erstellen oder die "000-default.conf" erweitern, in meinem Fall:

nano 000-default.conf

hinzufügen eines neuen Virtual host

<Virtualhost *:[DEIN_PORT_DER_IN_DER_PORTS_CONF_STEHT]>
DocumentRoot [DEIN_STRENG_GEHEIMES_VERZEICHNIS] 
ServerName STRENG_GEHEIMER_SERVER 
ServerAdmin SAG_ICH_DIR_NICHT@geheime_email.tld 
</Virtualhost> 

vor dem : muss ein * sein also *:

danach noch ein restart

sudo service apache2 restart

und tada "zweiter" Server läuft (evtl musst du [DEIN_STRENG_GEHEIMES_VERZEICHNIS] noch mit chown etc. modifizieren das Apache die nötigen rechte hat um darauf zugreifen zu können)

Jetzt mein Problem:

Unter dem "Standart" Port von Apache (80) wenn ich mit der datei test.php eine Verbindung zum Mysql - Server herstellen möchte funktioniert dies Prima, sobalt ich die Test.php jedoch auf meinen "zweiten" Server unter Port 8081 schiebe so kommt nur "Verbindung fehlgeschlagen: Connection refused" zum vorschein.

Inhalt von test.php:

<?php
    $db_user = "BENUTZER";
    $db_pw = "PASSWORT";
    $db_place = "DATENBANK";
    $db_server = "192.16x.17x.xxx";
    $mysqli = new mysqli($db_server, $db_user, $db_pw, $db_place);
    $state = true;
    if ($mysqli->connect_errno) {
        return "Verbindung fehlgeschlagen: " . $mysqli->connect_error;
        $state = false;
    }
    echo mysql_get_host_info($mysqli);

Info:

den Verwendeten nutzer habe ich von allen rechten bis hin zu "nur" datenbankspezifische Rechte schon alles durchprobiert. Auch habe ich schon von "localhost" auf "%" auf "192.16x.17x.xxx" etc. umgestellt.

Gehe ich auf 192.16x.17x.xxx/phpmyadmin und verwende den Benutzernamen + Passwort kann ich mich Problemlos einlogen (auch wenn ich über 192.16x.17x.xxx:8081/phpmyadmin einlogen möchte)

Ich sehe mich echt nicht raus als währe es gut wenn jmd den fehler erkennen und finden würde, danke schonmal

Computer, Technik, programmieren, MySQL, PHP, Technologie, Apache2, phpMyAdmin, Spiele und Gaming
PHP auf xampp funktioniert die Webseite auf 1und1 (ionos.de) funktioniert die Webseite nicht mehr?

Hallo, ich habe eine .php Webseite erstellt. Die Funktion habe ich immer mit Xampp überprüft. Soweit war diese dann auch fertig und vollkommen funktionsfähig. Jetzt habe ich diese auf 1und1 (ionos.de) in meinen Webspace geladen. Dort nutze ich die selbe php version welche ich bei xampp genutzt habe.
Beim ersten Test der Seite soweit auch gut. Alles wurde richtig angeziegt und schien zu funktionieren.

Beim weiteren Test aber musste ich feststellen, dass ich keine cookies setzen kann. Ich bekomme keine zurückgegeben. Offline hat das aber immer funktioniert.

So:

setcookie ("username", $auth->account['username'], time()+28800); 

Jetzt bekomme ich immer folgenden Fehler:

Warning: Cannot modify header information - headers already sent by (output started at /homepages/2/d785807995/htdocs/page/login.php:1) in /homepages/2/d785807995/htdocs/page/login.php on line 101

Auch wenn ich versuche den gesetzten Cookie auszulesen... Ohne Erfolg. Offline in Xampp kein Problem.

auch

header('Location: /page/suche.php');

funktioniert nicht mehr. Hier bekomme ich dann:

Warning: Cannot modify header information - headers already sent by (output started at /homepages/2/d785807995/htdocs/page/login.php:1) in /homepages/2/d785807995/htdocs/page/login.php on line 105

Warum kann ich das nicht so lassen wie ich es bisher hatte? Warum hat das mit Xampp auf dem rechner funktioniert aber auf dem Server nicht mehr? Hat jemand bitte einen Rat für mich?

Keine Hilfe war für mich:

  • https://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php/8028987

Beste Grüße aus Karlsruhe

Computer, Technik, HTML, 1und1, PHP, Technologie, xampp, ionos

Meistgelesene Fragen zum Thema PHP