Autor Beitrag
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 16.02.17 03:20 
Um Hintergrundgrafiken wechseln zu können, benutze ich ein Form, in das ich eine Liste vorhandener Grafiken einlese. Diese können dann per JavaScript geändert werden.


ausblenden PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
<?php
$dateiliste = array();
$backpath = ""// muß je nach Anwendung eingetragen werden

function allfromdir($path,$match) {
global $dateiliste;
if ( is_dir ( $path ))  // Ist es ein Verzeichnis ?
  {
  if ( $handle = opendir($path) ) // Verzeichnis öffnen
    {
    while (($file = readdir($handle)) !== false)  // Verzeichnis einlesen
    {
    if (preg_match($match,strtolower($file)) && $file != "." && $file != ".."// nur gültige Einträge nehmen
      {
        $dateiliste[] = trim($file);
      }
    }
    closedir($handle);
    }
  }
}
?>


ausblenden Cascading Style Sheet
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
<script type="text/javascript">
function zeigeBild(sel) {
pic = sel.options[sel.selectedIndex].value;
document.getElementById('body').style.backgroundImage = "url("+pic+")";
}
</script>
<style type="text/css">
body { margin:0border:0padding:0height:100%max-height:100%font-family:arial, verdana, sans-serif; overflow: hidden; background: transparent; background-attachment:fixed;}

#backselectform { padding2px; }

#backselect { width:200pxfont-size12pxpadding:1pxmargin:0cursor: pointer; background-color: orange; font-weight: bold; font-size16pxborder: none; }
#backselect option:hover {background:aqua;}
</style>


ausblenden HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
<?php
allfromdir($backpath,"(bmp|gif|ico|jpg|png)");
?>

<div style="position: absolute; top:80px; left:0px; width:200px;
overflow-x:hidden; overflow-y:hidden;"
>

<form id="backselectform" name="backselectform" target="" method="GET" action="content.php">
<select id="backselect" name="backselect" size="20" onChange="zeigeBild(this)" title="Hintergrundgrafik auswählen">
<?php
foreach ($dateiliste as $value)
{
  echo'<option value="'.$backpath.$value.'">'.$value.'</option>';
}
?>

</select>
</form>
</div>


Damit das funktioniert, muß für $backpath ein gültiges Verzeichnis mit geeigneten Grafiken angegeben werden. Außerdem muß der Body-Teil des HTML statt nur "<body>" zusätzlich die benötigte id enthalten, also "<body id="body">" im Beispiel.

Ich hoffe, die Fragmente sind soweit verständlich, denn das ist alles in ein sehr komplexes Programm integriert.

Mein Anliegen: Ich möchte mit php den Namen der selektierten und aktiven Hintergrundgrafik ermitteln, um diese zum Download anbieten zu können. Das Problem dabei ist, daß ich nicht weiß, wie ich entweder mit php das Value der selektierten Option ermitteln kann oder es aus der JavaScript-Funktion heraus übergeben kann.

Woher ich die Funktion "ZeigeBild" habe, weiß ich nicht mehr. Ich benutze den Schnipsel zwar schon seit Jahren, kann aber die eigentliche Funktionsweise nicht analysieren. Am liebsten wäre mir dabei, wenn das statt mit JavaScript auch mit php möglich wäre. Aber ich habe keine Ahnung, wie man onChange, onClick, onMouseOver etc. an was anderes als an JavaScripte übergeben kann.

Falls jemand zufällig eine funktionierende Idee hat, würde ich mich freuen, diese vermittelt zu bekommen. Es eilt aber nicht.

Falls die Codeschnipsel nicht reichen, würde ich bei Gelegenheit "from the scratch" ein kleines Beispielprogramm mitsamt Grafiken zusammenstellen und hochladen.
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 428
Erhaltene Danke: 51



BeitragVerfasst: Do 16.02.17 13:23 
Nein, du kannst mit einer serverseitigen Programmiersprache wie PHP den Inhalt des Clients (Browsers) nach dem Rendern einer Seite nicht mehr ändern, ohne dass er selbst irgendwelchen Code ausführt oder die Seite neu lädt. Der Browser kann in den meisten Fällen nur in Javascript programmiert werden. Das schränkt die Wahl der Sprache schon ziemlich ein.

Die Funktion zeigeBild() macht Folgendes:

ausblenden JavaScript-Quelltext
1:
pic = sel.options[sel.selectedIndex].value;					


Setze die Variable pic auf den Wert des ausgewählten (selectedIndex) Eintrags in der Selectbox, die du als Parameter der Funktion übergeben hast (sel), und ...

ausblenden JavaScript-Quelltext
1:
document.getElementById('body').style.backgroundImage = "url("+pic+")";					


... setze das Hintergrundbild des body-Seitenelements auf den CSS-URL aus dieser Variablen. Dass das unfassbar fehleranfällig ist, muss ich dir wahrscheinlich schon nach dieser Erklärung nicht mehr sagen ... :)

Zu deinem Problem: Dein PHP-Script kann nicht "sehen", was der Besucher im Browser so anstellt, denn es funktioniert, wie gesagt, ausschließlich serverseitig. Du müsstest also schon beim Wechsel des Bildes dem PHP-Script mitteilen, welches Bild gerade geladen wurde, und z.B. diese Information in der Benutzersitzung speichern:

ausblenden JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function zeigeBild(sel) {
    // ...

    // Bild im Hintergrund an PHP schicken:
    var r = new XMLHttpRequest();
    r.open("POST""ajaxscript.php"true); // Pfad ändern, natürlich! ;-)
    r.onreadystatechange = function () {
        if (r.readyState != 4 || r.status != 200return;
        // Hier könntest du noch irgendwas loggen, wenn du möchtest.
    };
    r.send("bild="+pic);
}


ajaxscript.php:

ausblenden PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
<?php
session_start();
if ($_POST["bild"] != null) {
    $_SESSION["userbild"] = $_POST["bild"];
}

// Jetzt ist in der Benutzersession jeweils die Adresse des aktuellen Bildes gespeichert.
?>


Haftungsausschluss: Ich habe gerade keine Möglichkeit, das zu testen, sollte aber so ähnlich funktionieren. Für die Validierung sämtlicher irgendwo übergebenen Parameter solltest du aber schon dringend sorgen - kleine Zusatzaufgabe. ;)
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 16.02.17 16:25 
Hallo ! Das war aber eine schnelle Antwort. Danke erstmal !!!

Bei Gelegenheit werde ich den Lösungsvorschleg ausprobieren. Die Kontrolle, ob das jeweils zu ladende Bild auch wirklich existiert, habe ich eigentlich vorgesehen. Was sonst könnte denn sonst noch daran unsicher sein?

Vor allem wundert mich der Hinweis die Methode wäre unfassbar fehleranfällig. Ich habe diese JavaScript-Grundstruktur aus fremder, unbekannter Quelle schon mehrere Jahre in Benutzung und hatte nie Probleme damit. Vielleicht sollte ich dazu noch erwähnen, daß ich im Programm natürlich erst auswerte, ob JavaScript überhaupt aktiviert ist. Wenn nicht, wird die ganze
Prozedur gar nicht erst angezeigt. Ich werde heute abend mal ein kleines Beispielprogramm hochladen. Vorher werde ich mich am Lösungsvorschlag versuchen und einbauen, falls er funktioniert.

Nochmals vielen Dank !

Nachtrag:
Nachdem ich mir den Vorschlag inhaltlich durchsah: Ich habe dabei einiges nicht verstanden:

r.open("POST", "ajaxscript.php", true); // Pfad ändern, natürlich! ;-)

Was ist dieses "ajaxscript.php" ? Woher bekomme ich es ? Oder soll da der Name des Programms hin ?

Was ist mit der Variablen "userbild" in der Zeile

$_SESSION["userbild"] = $_POST["bild"];


Zuletzt bearbeitet von delnu am Do 16.02.17 16:32, insgesamt 1-mal bearbeitet
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 428
Erhaltene Danke: 51



BeitragVerfasst: Do 16.02.17 16:31 
Denkanstoß: Was macht denn deine Funktion, wenn ein böswilliger Zeitgenosse per F12 deine Selectbox einfach ändert? Klar, das Schlimmste, was passieren kann, ist, dass dann halt kein Bild gesetzt wird - aber was, wenn du es ausliefern willst? Du solltest zumindest PHP-seitig prüfen, ob die Datei in deinem Bilderverzeichnis existiert, bevor du den Wert weiterverarbeitest. Sonst könnte zum Beispiel auch jemand versuchen, deine /etc/passwd herunterzuladen. :)
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 16.02.17 16:37 
Oh, als ich meinen Beitrag nochmal editiert habe, kam schon eine Antwort. Damit hätte ich nicht gerechnet.

Was ist mit F12 ? Das verstehe ich nicht. Es handelt sich um den Plan eines offenes Projektes, sonst würde ich ja nicht auf die Idee kommen, die Hintergrundbilder zum Download anbieten zu wollen. Die Vorschau soll ja "nur" dazu dienen, daß man das Aussehen gleich am Stück sieht und nicht den kleinen Ausschnitt. Denn viele Hintergrundgrafiken sind gar nicht für endloses Aneinanderreihen geeignet. Das war ja ursprünglich auch anfangs nur für mich selbst der Anlaß, etwas zu suchen, das mir die Gesamtwirkung zeigt und einen schnellen Wechsel "on the fly" ermöglicht.

Und wie berets erwähnt: Ich prüfe, ob die Grafik überhaupt existiert, denn die vorhandenne Bilder werden ja dynamisch eingelesen. Was nicht da ist, kommt gar nicht erst in die Liste. Gut, ich könnte vielleicht noch die Bildgröße und evtl. den Dateikopf prüfen, um auszuchließen, daß es sich vielleicht um eine falsch benannte Datei handelt. Alles was keine gültiges Bild ist, soll gar nicht erst in Liste.
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 428
Erhaltene Danke: 51



BeitragVerfasst: Do 16.02.17 16:43 
user profile icondelnu hat folgendes geschrieben Zum zitierten Posting springen:
r.open("POST", "ajaxscript.php", true); // Pfad ändern, natürlich! ;-)

Was ist dieses "ajaxscript.php" ? Woher bekomme ich es ?


Aus meinem Beitrag. Da kann dann auch dein Auslieferungscode rein, wenn du willst.

user profile icondelnu hat folgendes geschrieben Zum zitierten Posting springen:
Was ist mit der Variablen "userbild" in der Zeile

$_SESSION["userbild"] = $_POST["bild"];


Das ist eine Sessionvariable, der Server merkt sich darüber, was der Benutzer zuletzt ausgewählt hat. Wie gesagt: Was im Browser passiert, musst du dem Server auch sagen, sonst weiß er das nicht.

user profile icondelnu hat folgendes geschrieben Zum zitierten Posting springen:
Was ist mit F12 ? Das verstehe ich nicht.


Was in einer Selectbox drinsteht, entscheidet in letzter Instanz der Benutzer und nicht du. Dafür hat jeder halbwegs moderne Browser eine eingebaute Funktion, i.d.R. über F12 zu erreichen. Das heißt: Du kannst dich niemals darauf verlassen, dass in der Selectbox ein valider und ungefährlicher Wert drinsteht.
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 16.02.17 17:01 
Na gut, ich habe es gerade mal mit F12 probiert. Da zeigt mir firebug dann den generierten HTML-Code. Wie daraus jemand etwas manipulieren könnte, ist mir aber unklar. Man könnte den Quellcode nachzubasteln versuchen - na und ?

Was das "ajaxscript.php" betifft: Soll ich das dann als zusätzliches Script in meinen Quellcode integrieren?

Ich hänge jetzt doch jetzt schon einfach mal mein vorige Nacht noch auf die Schnelle gebasteltes Minimalbeispiel jetzt schon hier dran, statt erst heute abend. Ich habe aber gleich noch einen Termin und bin dann erstmal weg.
Einloggen, um Attachments anzusehen!
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 428
Erhaltene Danke: 51



BeitragVerfasst: Do 16.02.17 17:08 
user profile icondelnu hat folgendes geschrieben Zum zitierten Posting springen:
Na gut, ich habe es gerade mal mit F12 probiert. Da zeigt mir firebug dann den generierten HTML-Code.


Firebug erlaubt dir auch eine Manipulation des angezeigten Codes. :)

user profile icondelnu hat folgendes geschrieben Zum zitierten Posting springen:
Was das "ajaxscript.php" betifft: Soll ich das dann als zusätzliches Script in meinen Quellcode integrieren?


Kannst du machen. Wie das am Ende heißt, ist einigermaßen schnuppe. Nur der AJAX-Request muss halt funktionieren.
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 19.02.17 11:56 
Ich bin jetzt mal dazu gekommen, die Vorschläge einzubauen. Aber damit kann ich leider nichts anfangen. Ich habe jetzt zwar ein Cookie (also etwas, das ich bei meinen Programmen gar nicht will) aber was sich hinter dessen (anscheinend nicht einmal selbst festlegbarem) Cookie-Namen "PHPSESSID" verbirgt und wie man dann darauf zugreift und das nutzen soll, bleibt mir ein Rätsel.

Trotzdem Danke für die Mühe. Ich werde das Problem anders zu lösen versuchen, vielleicht durch Zwischenschalten eines iframes und Auslagerung der Auswahlfunktion. Das Speichern des jeweils aktuellen Hintergrundes funktioniert, wenn er beispielsweise bereits vor dem Programmstart durch Zufallsgenerator festgelegt wird. Darum kam mir dann erst nachträglich der Gedanke, es wäre schön, eben auch vorher gezielt auswählen zu können.

Tipps anderer lassen sich nur dann vernünftig einsetzen, wenn man die Funktionsweise versteht bzw. sich ein nachvollziehbarer Erfolg einstellt. Solange ich also nicht mehr weiß, muß ich bei dem bleiben, was ich nachvollziehen kann.

Vielleicht bin ich in ein paar Monaten weiter.

Was die Manipulierbarkeit des Codes mit Firebug betrifft, so kann mir das doch eigentlich egal sein, weil es keine Auswirkungen auf den Code auf dem Server hat. Oder täusche ich mich ?
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 874
Erhaltene Danke: 148

Win7
VS 2013, VS2015
BeitragVerfasst: So 19.02.17 12:28 
Es gingen hier (gefühl) ein paar Sachen durcheinander. Vielleicht zurück zu deinem eigentlichen Anliegen:
Zitat:
Mein Anliegen: Ich möchte mit php den Namen der selektierten und aktiven Hintergrundgrafik ermitteln, um diese zum Download anbieten zu können. Das Problem dabei ist, daß ich nicht weiß, wie ich entweder mit php das Value der selektierten Option ermitteln kann oder es aus der JavaScript-Funktion heraus übergeben kann.


Du hast also in einem Verzeichnis diverse Dateien und man kann sich daraus den gewünschten Hintergrund aussuchen. OK.
Das "zum Download anbieten" kann jetzt aber grundsätzlich auf zwei Arten passieren:

1. Du erzeugt clientseitig mit Javascript einen Link, der auf diese Datei verweist. Vorteil: Schnell, Sicher, Einfach.
Nachteil: Der Server bekommt nicht mit, was der Benutzer jetzt ausgewählt hat. Wenn du wirklich nur das Bild zum Download anbieten möchtest, reicht das. Aber wenn quasi der Hintergrund der Webseite beim nächsten Mal dem entsprechen soll, dann muss der Server das ja irgendwo speichern.

2. Du sendest die Information zurück an den Server und empfängst sie dort mit einem PHP-Skript. Vorteil: Du kannst serverseitig was mit der Information machen.
Nachteil: Du musst dir mehr Gedanken um die Sicherheit machen, du musst den empfangenen Pfad validieren bevor du die Datei rausgibst.

Möglichkeit 2 geht nun entweder durch absenden des Formulars oder per AJAX Request.

Falls ich da jetzt was falsch verstanden habe, wäre eine bessere Fehlerbeschreibung gut. Also was funktioniert schon, was soll funktionieren, was hast du probiert und was tut es stattdessen?

Ein bisschen Off-Topic:
user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
... setze das Hintergrundbild des body-Seitenelements auf den CSS-URL aus dieser Variablen. Dass das unfassbar fehleranfällig ist, muss ich dir wahrscheinlich schon nach dieser Erklärung nicht mehr sagen ... :)

Was ist daran fehleranfällig? Der Pfad wird passend übermittelt, die URL ist relativ, es werden nur Bilder gezogen und der Pfad ist hartkodiert. Mir fällt jetzt momentan kein Fall ein, wie es nicht funktionieren würde.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18787
Erhaltene Danke: 1645

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 20.02.17 05:25 
user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
Nein, du kannst mit einer serverseitigen Programmiersprache wie PHP den Inhalt des Clients (Browsers) nach dem Rendern einer Seite nicht mehr ändern, ohne dass er selbst irgendwelchen Code ausführt oder die Seite neu lädt. Der Browser kann in den meisten Fällen nur in Javascript programmiert werden. Das schränkt die Wahl der Sprache schon ziemlich ein.
Es gibt aber Tools wie uniGUI oder Raudus, die ein visuelles Designen in der Delphi IDE inkl. OnClick usw. bieten und das alles in Delphi Code auf dem Server behandeln und die Änderungen an der GUI automatisch zurück schieben.

Wenn man nicht viel JavaScript aber Delphi kann, ist das eine interessante Alternative.

Ich vermute, dass es das auch für andere Sprachen bzw. IDEs gibt, das kenne ich aber nicht.
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 428
Erhaltene Danke: 51



BeitragVerfasst: Mo 20.02.17 10:12 
Das klingt furchtbar unpraktisch.
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.02.17 12:35 
Danke erstmal für die neuen Antworten !

Zunächst mal zur Sicherheit: Es geht bei mir um eine Website mit internen Verlinkungen per iframe zu anderen Websites, also eine Art vereinfachter Lesezeichen mit selektieren Inhalten. Durch die Kapselung in iframes ist schon mal direkte Manipulation von aussen schwerig. Als eigene Leistung will ich zusätzlich einige Sachen zum Download anbieten, so z.B. "seemless"-Hintergründe. Auch das geschieht gekapselt in einem iframe.


@jfheins: Bisher habe ich 2 Möglichkeiten: Entweder wird das aktuelle Hintergrundbild als Zufallsgrafik per php beim Aufbau der (integrierten) geladen. Dann kann diese Grafik abgespeichert werden, aber der Nutzen kann sich die Garfik vorher nicht auswählen. Die andere (hier vorgestellte) Möglichkeit ist, daß der Nutzer zwar per JavaScript einen "background" wählen kann, dieser aber nicht gespeichert werden kann, weil die Rückmeldung an den Server fehlt.

Mittlerweile stelle ich mir eine Lösungsmöglichkeit so vor, daß ich vielleicht die auszuwählende Grafik irgendwie nicht als echten "background" setze, sondern nur einfach mehrfach neben- und untereinander z.B. in einem div- oder span- Bereich. Dann bliebe aber dennoch die Frage der Kommunikation mit dem Server, was die Auswahl betrifft. Ich müßte vielleicht irgendwas finden, das per "<a href" die in Frage kommenden Grafiken listet.

Oder wie kann ich es mit php ermöglichen, eine Auswahlliste zu erstellen ?
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 428
Erhaltene Danke: 51



BeitragVerfasst: Mo 20.02.17 12:49 
user profile icondelnu hat folgendes geschrieben Zum zitierten Posting springen:
Oder wie kann ich es mit php ermöglichen, eine Auswahlliste zu erstellen ?


Tust du doch schon? :gruebel:
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 20.02.17 16:02 
Nein, die Liste wird in einem HTML-Bereich <form> ... </form> erzeugt.

Ich meinte wirklich eine reine PHP-Liste. Klar, ich könnte alle Namen der verfügbaren Grafiken mit "echo" ausgeben, aber dadurch wären sie noch nicht anklickbar.
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 428
Erhaltene Danke: 51



BeitragVerfasst: Mo 20.02.17 16:04 
Im Browser muss HTML ankommen. Ob du das per echo() oder sonstwie zusammenbaust, ist dem Browser ja jetzt erst mal egal.
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 21.02.17 06:13 
Ich hatte das unklar ausgedrückt. Gemeint war eine mit php erzeugte, anklickbare Liste. Im Gegensatz zu der, die bei Klicks eine JavaScript-Funktion aufruft.

Wenn ich eine Auswahlliste mit reinem php hätte, könnte ich nämlich das Ergebnis gleichermaßen dafür benutzen, eine Grafik zu laden (egal wie oft ich die dann zu Demostrationszwecken über- unter- nebeneinander setze) als auch einen Downloadlink drauf setzen.

Ich habe bisher immer nur was mit <form> ... </form> gefunden und das funktioniert hier eben nicht wie gewünscht.

Es eilt aber nicht. FALLS ich selbst was rausfinde, werde ich es natürlich posten.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18787
Erhaltene Danke: 1645

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 21.02.17 08:08 
user profile icondelnu hat folgendes geschrieben Zum zitierten Posting springen:
Gemeint war eine mit php erzeugte, anklickbare Liste. Im Gegensatz zu der, die bei Klicks eine JavaScript-Funktion aufruft.
Du willst ja etwas machen, wenn die Liste angeklickt bzw. der Eintrag geändert wird. Und dafür gibt es im Browser nur JavaScript.

Du kannst auch ein Formular erstellen und mit einem Button darin dieses Formular an den Server schicken. Das geht ohne JavaScript. Dann passiert aber auch erst etwas, wenn das Formular abgeschickt und die Seite neu geladen ist.

Aber was ist denn das Problem bei JavaScript? Damit kannst du das Bild doch sowohl als Hintergrund setzen als auch an den Server schicken, dass diese Einstellung geändert wurde.
delnu
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 21.02.17 09:50 
Ich fand keine Möglichkeit, beides zu machen.

Die Seite würde ja schon dann erneut geladen, wenn ich die Funktion zum Speichern der Grafik einbaue. Wenn ich also mittels JavaScript dann ebenfalls die Seite neu aufrufe, schließt sich doch beides wieder aus. Wenn ich es in einem einzigen Aufruf, also mit nur einem "form"-block statt mit zweien realisieren könnte, wäre allerdings die ganze Umständlichkeit ohnehin unnötig.

Ich muß dazu erwähnen, daß ich Methode zum Speichern hier gar nicht erst zuätzlich gepostet habe, weil die für sich gesehen ja funktioniert. Das Problem ist die Auswahl anstelle einer Zufallsgrafik beim Start. Der nicht funktionierende Kompromiss zwischen beidem ist zu sehen unter freelinks.usa.cc/random/

Beim Start wird eine Zufallsgrafik erzeugt, die sich abspeichern läßt. Danach lassen sich nur noch Hintergründe auswählen und im rot umrandeten Feld bleibt der Hintergrund so zu sehen, wie er beim Start war. Das gilt auch für die Option zum Speichern und die Angaben zur Größe und Dateigröße.

Ich habe vorhin eine ganze Weile (lokal) getestet, ob sich was machen läßt, wenn ich mit normalen Links "<a href ...></a> arbeite. Dann kann ich zwar die Grafiken wechseln, aber als Variable fürs Speichern würde nicht die der angeklickten Grafik genommen, sondern die der letzten aufgelisteten. Das wird wiederum damit zusammenhängen, daß PHP ja letztlich nur "fertigen" HTML-Code erzeugt.

Ich lasse das jetzt erstmal. Es eilt ja nicht. Mit den Schnippseln von hydemarie bin ich jedenfalls nicht klargekommen. Das Einzige was ich davon hatte, war ein Cookie, aber ich benutze keine Cookies.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18787
Erhaltene Danke: 1645

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 21.02.17 17:36 
Moment, ich glaube hier gibt es ein Missverständnis. Die Schnipsel oben zielten darauf ab auf dem Server die Information zu speichern welche Grafik der Benutzer ausgewählt hat.

Nach deinem Beispiel verstehe ich das jetzt so, dass du einfach quasi einen Downloadlink auf die ausgewählte Datei haben möchtest?

Dann muss lediglich die URL, die bei dem Klick auf den Download ausgelöst wird, geändert werden. Das wäre sehr einfach und rein per Javascript ohne ein Neuladen der Seite möglich. Meinst du das so?