Apache: Umgebungsvariablen an Script weiter leiten

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
suleiman
Beiträge: 193
Registriert: 21.12.2016 04:09:41

Apache: Umgebungsvariablen an Script weiter leiten

Beitrag von suleiman » 06.02.2017 09:20:16

Hey Ho,

ich hoffe Ihr könnt mir helfen.
Die folgende Frage hätte ich bestimmt auch in einem Programmierer-Forum stellen können, aber ich bin nun mal hier registriert xD

ich hab mir einen LAMB aufgesetzt (B=Bash Skripts).
Soweit läuft es auch alles wie ich mir vorstelle.

Jetzt möchte ich einen Haufen an Abfragen starten, aber wie kann man dem Apache sagen das die Variablen mit übermittelt werden sollen?
Konkret: Ich weiß wie ich Daten mit Skripts auslesen/bearbeiten kann, aber ich weiß nicht wie ich Variablen aus Eingabefeldern an ein Skript übergebe.
Feste Werte einem Skript zu übergeben ist kein Problem.

Ich hab es schon mit Formen probiert und kann da auch mit Variablen übermitteln, aber ich weiß nicht wie man dann die Seite wechseln kann und die Variablen dahin mit nimmt.
Bei über 40 Fragen mit DB-Auflistungen will ich mehr als nur eine Seite haben um Umgebungsvariablen zu nutzen.

Ich habe mich an die Anleitung von YoLinux gehalten, aber ich hab da einiges wohl nicht verstanden.

Mein Skript sieht wie folgt aus ...

Code: Alles auswählen

#!/bin/bash
# Communication Gateway Interface
# Dieses Sktipt dient als Verbindung zwischen Apache und einer MySQL-DB.
# 2016-01-05 @suleiman

# Zugriffsdaten für den MySQL-Server (hier lass ich mir was besseres Einfallen, wenn alles mal läuft)
DB_NAME="xxx"
USER_NAME="xxx"
USER_PASSWD="xxx"

# Ich muß mir noch was einfallen lassen um die Umlaute nutzen zu können
INFTXT_SELECT_INDEX='Wähle einen Namen anhand der ID aus ...'
INFTXT_SELECT_STATUS_INDEX="Wähle den Status anhand der ID aus ..."

# HTML-Grundgerüst
echo "Content-type: text/html"
echo ""
echo "<html>"
echo "<head>"
echo "<title>MySQL Request</title>"
echo "<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">"
echo "</head>"
echo "<body>"
echo "<center>"

####################################################
# Hier kommt der eigentliche auszugebende Text hin #
####################################################

# Auflistung1
echo "<form method=GET action=\"${SCRIPT}\">"
echo "<h1>${INFTXT_SELECT_INDEX}</h1>"
mysql -D "$DB_NAME" -u "$USER_NAME" -p"$USER_PASSWD" --html -e "select ID,name,types.type,description from product join types where types.ID = type_index;"
echo "ID: <input type="text" name="var1" size=2>"
echo "<br><br><br>"

echo "<input type="submit" value="Weiter"></form>"

# Abfragen ob das Script richtig ausgeführt wurde
if [ "$REQUEST_METHOD" != "GET" ]; then
	echo "<hr>Script Fehler:"
	echo "Aufruf einer Funktion ist fehlgeschlagen, REQUEST_METHOD!=GET."
	echo "Übergabe der Parameter muß überprüft werden und METHOD=\"GET\" muss benutzt werden.<hr>"
	exit 1
fi

# Abfragen ob Daten übermittelt wurden
if [ -z "$QUERY_STRING" ]; then
	exit 0
fi

# Auflistung2
echo "<h1>${INFTXT_SELECT_STATUS_INDEX}</h1>"
mysql -D "$DB_NAME" -u "$USER_NAME" -p"$USER_PASSWD" --html -e "select * from status;"
echo "ID: <input type="text" name="var2" size=2>"
Wie macht man jetzt weiter ?
Wenn ich einen neuen Eintrag anhänge dann wird meine Seite nur länger und länger.
Ich möchte aber am liebsten für jede Frage eine neue oder leere Seite.
Wie schon gesagt es sind rund 40 Fragen mit teilweise großen Informationen aus der DB welche aufgelistet werden sollen.

Am liebsten würde ich einfach ein Frame erstellen und jede Frage in eine HTML parken und dann im Frame anzeigen lassen.
Aber kann man dann die Variabeln an einen Link irgendwie anbinden ?
Bis jetz kenne ich nur den Submit-Button von der Form wo ich erstellt habe, aber ich weiß nicht ob man damit auch einen Link erstellen kann.

Gibt es vielleicht noch andere Methoden ?
Ich bin noch sehr grün hinter den Ohren wenn es um Umgebungsvariablen vom Apache geht!

Benutzeravatar
schorsch_76
Beiträge: 2535
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Apache: Umgebungsvariablen an Script weiter leiten

Beitrag von schorsch_76 » 06.02.2017 22:53:35


suleiman
Beiträge: 193
Registriert: 21.12.2016 04:09:41

Re: Apache: Umgebungsvariablen an Script weiter leiten

Beitrag von suleiman » 07.02.2017 12:27:43

Danke für die Links.

Mit dem "submit button" komm ich nicht weiter.
Ich habe mittlerweile probiert den QUERY_STRING zu Phrasen und dann selbst einen QUERY_STRING1 zu erstellen und als Value dem "Submit button" übergeben,
aber das klappt auch nicht wie gewünscht.

Egal was ich probiere ich komme nie weiter als bis zur zweiten Abfrage.
Irgendwie kann man nur die Werte von <input> mit GET oder POST dem Skript übergeben.
Ich will auch nur einen Wert mit <input> bestimmen, aber insgesammt 50 Werte übergeben.
Ich will auch keine 50 Abfragen auf einer Seite habe, da die Abfragen sich jedes mal unterscheiden.
Erst nach dem bestimmen der 50ten Variable soll eine Post-Anweisung kommen welche Daten in die DB schreibt.

Ich könnte einfach eine temporäre Datei erstellen und alle Daten da zwischenspeichern,
aber die Datei würde erst dann gelöscht werden wenn die Variabe Nr.50 bestimmt wurde.
Ändern kann man die Daten dann auch nicht mehr, nur neu anlegen.
Ist alles irgendwie suboptimal.

Meine Frage nun ...
Wie kann man einer Variable einen Wert von <input> zuteilen, ohne dafür einen "button" zu nutzen ?

Code: Alles auswählen

echo "<input type=number name=\"new_value\">"
echo "<a href=\"../cgi-bin/mysql1.sh?1&2&3&${VARIABLE}&6&7\">"
Wie bekomme ich new_value.value in VARIABLE rein ?
Geht das überhaupt ?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Apache: Umgebungsvariablen an Script weiter leiten

Beitrag von eggy » 14.02.2017 07:46:27

Das Zauberwort ist "hidden", https://wiki.selfhtml.org/wiki/HTML/For ... e_Elemente
Und falls dir der Begriff "SQL-Injection" noch nichts sagt, Wikipedia hat ein schönes Beispiel https://de.wikipedia.org/wiki/SQL-Injec ... _von_Daten

suleiman
Beiträge: 193
Registriert: 21.12.2016 04:09:41

Re: Apache: Umgebungsvariablen an Script weiter leiten

Beitrag von suleiman » 15.02.2017 17:00:39

Joa habe ich mit hidden auch gelöst, danke für den Tip,hatte ich erst übersehen..
Ich habe dieses Post noch laufen weil es noch eine andere Möglichkeit gibt:"mod_sessions"

Wie kompliziert kann es sein ein Facebook oder GMX zu bauen ?
Ich finde kaum Info zum Thema Sessions, dabei würde ich gern damit arbeiten, obwohl es atm ein Overkill für mich wäre.

Jemand damit Erfahrung gesammelt und kann man damit immer noch sicher Arbeiten ?

Antworten