Wie kann man das programmieren?

exhubiranta

Mitglied
Hallo,

möchte mir (Anfänger) ein Script mit eurer Hilfe erarbeiten. Es geht darum, dass User Interpretationen zu meinen Bildern eingeben dürfen und diese dann darunter nach Klick erscheinen. Vorher darf man diese Titel nicht lesen dürfen, sonst braucht man sich ja keine Gedanken zu machen.

Damit ihr es euch besser vorstellen könnt, ein Bild im Anhang. Auf einer Seite sollen ca. 10 Bilder sein. Außerdem soll das kleine Formular spamsicher sein und es soll ein Email an mich abgehen, damit ich von dem Eintrag mitbekomme und ihn notfalls löschen kann. Am besten vom Email aus.

Die Texte sollen in einer txt-Datei oder anders gespeichert werden, nicht in einer Datenbank. Habe nämlich keine.

Könnt ihr mir stückweise helfen? Wie beginnt man? Habt ihr sowas schon in petto?

Viele Grüße
exi
 

Anhänge

  • fuer-forum.JPG
    fuer-forum.JPG
    85,2 KB · Aufrufe: 100
Als Datenspeicher könnte man XML-Dateien oder SQLite verwenden, wenn dein PHP das unterstützt.

Grundsätzlich ist dein Vorhaben relativ leicht umsetzbar.

Du brauchst ein Formular, in dem die entsprechenden Daten eingetragen werden, um Spam zu verhindern, solltest du ein CAPTCHA einbauen.

Nach dem Abschicken des Forms sollten die Form-Daten in die XML-Datei o. SQLite-Datenbank eingetragen werden. Gleichzeitig kannst du mit mail() die entsprechenden Daten verschicken.

Das mit dem direkten Löschen per Email stell ich mir grad nicht so einfach vor, einen Link könnte man durchaus mitschicken. Allerdings sollte man trotzdem vor dem Löschen ein Passwort eingeben müssen.

Ich weiß grad nicht, warum du es noch nicht selbst umgesetzt hast, den Anforderungskatalog hast du ja auch schon fertig. Das Umsetzen ist jetzt nur noch eine Frage des Programmierkönnens und Lesen des PHP-Manuals für die entsprechenden Funktionen. :)
 
Das mit dem direkten Löschen per Email stell ich mir grad nicht so einfach vor, einen Link könnte man durchaus mitschicken. Allerdings sollte man trotzdem vor dem Löschen ein Passwort eingeben müssen.

Warum nicht einfach? Per Link kann man alles mögliche aufrufen, warum nicht auch eine Seite, mit der Anweisung des Löschens...

Ein Passwort ist nicht notwendig, da doch die Mail sowieso kein anderer zu Gesicht bekommt.

Es könnte natürlich sein, dass man sich den Link zum Löschen beschaffen kann, aber wenn man den mit Zufallswerten verschickt, fällt eine Passwortabfrage weg. :)

Gruss
Commi
 
Hallo und danke für eure Gedanken,

habe doch dazu ein paar Einwände/Fragen.

Als Datenspeicher könnte man XML-Dateien oder SQLite verwenden, wenn dein PHP das unterstützt.

Warum nicht txt oder sto? Wo steht in der info.php, ob XML-Dateien unterstützt werden? SQLite kann mein Server definitiv nicht.

Du brauchst ein Formular, in dem die entsprechenden Daten eingetragen werden, um Spam zu verhindern, solltest du ein CAPTCHA einbauen.

Groß soll das Formular nicht sein, es besteht nur aus einem Textfeld und "Senden", siehe Grafik. Das Captcha bräuchte zu viel Platz und lenkt zu sehr ab. Geht nicht auch die Kombination verstecktes Formularfeld, Zeitsperre und IP-Übermittlung?

Ein Passwort ist nicht notwendig, da doch die Mail sowieso kein anderer zu Gesicht bekommt. Es könnte natürlich sein, dass man sich den Link zum Löschen beschaffen kann, aber wenn man den mit Zufallswerten verschickt, fällt eine Passwortabfrage weg.

Da bin ich auch dafür. Allerdings verstehe ich das mit den Zufallswerten nicht...

Ich weiß grad nicht, warum du es noch nicht selbst umgesetzt hast, den Anforderungskatalog hast du ja auch schon fertig. Das Umsetzen ist jetzt nur noch eine Frage des Programmierkönnens und Lesen des PHP-Manuals für die entsprechenden Funktionen.

Ich kann zwar existierende Scripts für mich anpassen - was auch nicht nicht immer klappt, aber selber etwas aufsetzen - Hilfe! Mein Hirn ist für die Programmierlogik nicht geschaffen, bin mehr Künstler. Ich kann nicht sagen, dass ich nicht probiert hätte, doch alle Lehrbücher waren so geschrieben, dass ich an irgendeiner Stelle hängen blieb und ausstieg.

Der Anfang ist leicht gemacht, aber wie geht's weiter?

PHP:
<html>

	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
		<title></title>
<style media="screen" type="text/css"><!--
ul {
margin: 0;
padding: 0;
}
--></style>
<script type="text/javascript">
function switchlayer(Layer_Name)
{
  var GECKO = document.getElementById? 1:0 ;
  var NS = document.layers? 1:0 ;
  var IE = document.all? 1:0 ;

  if (GECKO)
       {document.getElementById(Layer_Name).style.display=
	   (document.getElementById(Layer_Name).style.display=='block') ? 'none' : 'block';}
  else if (NS)
       {document.layers[Layer_Name].display=(document.layers[Layer_Name].display==
	   'block') ? 'none' : 'block';}
  else if (IE)
       {document.all[Layer_Name].style.display=(document.all[Layer_Name].style.display==
	   'block') ? 'none' : 'block';}
}
</script>
	</head>

	<body bgcolor="#ffffff">
		<table border="0" cellpadding="5" cellspacing="0" width="722">
			<tr>
				<td><img src="kutsche.JPG" width="350" height="228" border="0"></td>
				<td><img src="spielmannsz.jpg" width="350" height="228" border="0"></td>
			</tr>
			<tr>
				<td align="center">Was siehst du in dem Bild?<br>
					Gib' deine Interpretation hier ein:</td>
				<td align="center">Was siehst du in dem Bild?<br>
					Gib deine Interpretation hier ein:</td>
			</tr>
			<tr>
				<td>
					<form name="FormName" action="(Empty Reference!)" method="get">
						<table border="0" cellpadding="3" cellspacing="0" width="122">
							<tr>
								<td><input type="text" name="kutsche" size="34"></td>
								<td><input type="submit" name="senden" value="senden"></td>
							</tr>
						</table>
					</form>
				</td>
				<td>
					<form name="FormName" action="(Empty Reference!)" method="get">
						<table border="0" cellpadding="3" cellspacing="0" width="122">
							<tr>
								<td><input type="text" name="spielmannszug" size="34"></td>
								<td><input type="submit" name="senden" value="senden"></td>
							</tr>
						</table>
					</form>
				</td>
			</tr>
			<tr>
				<td valign="top"><a href="untermenue1.php" onclick="javascript:switchlayer('kutscha');
	 return false;">&gt;&gt; Meine und andere Deutungen - bitte klicken</a>
					<ul style="list-style-type:none">
						<ul id="kutscha" style="display:none;list-style-type:none;">
  <li><b>Frau auf Kutsche<br>
								</b>Madonnenfigur<br>
								Furie</li>
  
 </ul>
					</ul>
				</td>
				<td valign="top"><a href="untermenue2.php" onclick="javascript:switchlayer('spielmanno');
	 return false;">&gt;&gt; Meine und andere Deutungen - bitte klicken</a>
					<ul style="list-style-type:none">
						<ul id="spielmanno" style="display:none;list-style-type:none;">
  <li><b>Spielmannszug<br>
								</b>Opernglas<br>
								Chearleaders</li>
   </ul>
					</ul></td>
			</tr>
		</table>
		<p></p>
	</body>
</html>

Viele Grüße
exi
 
Hallo,

danke für die Hinweise, ich bin deshalb auch schon so weit wie ich alleine konnte.

Mit <form action="sendbild.php" method="post"> habe ich ein Email auf die Reise an mich geschickt.

sendbild.php:
PHP:
<?php
// Standardwerte übermitteln
include("config.php");

// Wegen Lauffähigkeit auf sicheren Servern
$kutsche= $_POST["kutsche"];

// IP ermitteln
function getip() {
if (getenv("HTTP_X_FORWARDED_FOR")) {
$realip   = getenv("HTTP_X_FORWARDED_FOR");
} else {
$realip   = getenv("REMOTE_ADDR");
}
return $realip;
}
$ip = getip();

// Mailversand - Variabeln in der config
  mail("$emailadresse", "$mailbetreff", "IP-Nummer des Absenders: $ip \r\n
$kutsche", 
  "From: Absender <Absenderemail>");

// Erfolgsmeldung, dass Email versendet wurde - Variable in der config
echo "$erfolg";

?>

config.php:
PHP:
<?php

// Eigene Emailadresse
$emailadresse = 'xxxx@xxxxxxxx.de';

// Betreff des Emails an den Empfänger
$mailbetreff = 'Neue Titeldeutung';


// Erfolgsmeldung, wenn Email versendet wurde
$erfolg="Die eMail wurde gesendet !<br><br>
<input type=button value=zurück onClick=history.back()>";

?>

Ein paar Sachen habe ich auch aus älteren Scripts, macht man das heute noch so?

Wie ich allerdings den Begriff, den ich mir gemailt habe, in das Aufklappfenster kriege, dass der Begriff da zu lesen ist, ist mir noch rätselhaft. Jetzt steht er da nur in html. Schließlich muss er ja in eine xml oder txt oder sto-Datei und von da wieder zurück auf die Seite. Und von der Lösung, wie man diesen Begriff vom Email aus da wieder löscht, bin ich auch noch weit entfernt.

Warum man eine Zufallszahl braucht, ist mir auch noch völlig schleierhaft.

Das mit der xml Datei und wie man erkennt, ob der Server so was verarbeiten kann, ist auch noch unklar.

Bitte helft mir weiter! Danke...

Viele Grüße
exi
 
Zuletzt bearbeitet:
Das mit register_globals=off hast du schon richtig erkannt, du müsstest es aber nicht erst in eine neue Variable schreiben. Vor allem benutzt du die Variable nirgends.

Desweiteren kannst du schauen, ob in phpinfo(); SimpleXML oder DOM auftaucht, dann kannst du XML-Dateien parsen und schreiben.
 
Wo steht bei mir was mit register_globals=off?

In der "Configure Command" steht u.a.
'--enable-xml' '--enable-simplexml'

Zu meiner großen Überraschung steht da auch:

SQLite
SQLite support enabled
PECL Module version 2.0-dev $Id: sqlite.c,v 1.166.2.11 2006/01/01 12:50:14 sniper Exp $
SQLite Library 2.8.17
SQLite Encoding UTF-8

Directive Local Value Master Value
sqlite.assoc_case 0 0

Mir wäre SQlite lieber, wenn das geht!

Viele Grüße
exi
 
Auf die Zufallszahl/Zufallsbuchstaben bist du nicht zwingend angewiesen.

Stell dir vor du hast einen festen, standartmäßigen Link zum Löschen der Daten.
(Beispielsweise löschen.php)

wenn der Link einmal bekannt ist, kann ihn jeder aufrufen und damit herumspielen.

Lässt du dir nun einen Link mit Zufallswerten schicken (Beispielsweise löschen.php?wert=942829), kannst du den generierten Zufallswert beim Abschicken, irgendwo speichern.

Klickst du in deiner Mail nun auf diesen Link, kann man mittels PHP ganz einfach diesen Wert aus dem Link mit dem gespeicherten Wert vergleichen. Stimmen sie überein, wird der Inhalt der Seite ausgeführt - in deinem Fall eben das Löschen...

Natürlich kannst du auch einfach generell ein Loginscript auf die Seite, die für das Löschen der Daten verantwortlich ist, erstellen. In dem Fall hast du ein festes Passwort - welches ebenfalls irgendwo gespeichert sein muss - dass du mit einem Formular eingeben kannst und anschließend mit dem gespeicherten Passwort verglichen wird.

Liegt an dir, für beide Varianten gibt es unzählige Tutorials und Scripts. :)

Gruss
Commi
 
Wo steht bei mir was mit register_globals=off?


Ich meinte das hier:

PHP:
// Wegen Lauffähigkeit auf sicheren Servern
$kutsche= $_POST["kutsche"];

Wenn SQLite dabei ist, brauchst du keine XML-Datei nehmen. SQLite kannst du wie eine normale Datenbank ansprechen, ist quasi das semi-professionelle Äquivalent zu Access-Datenbanken, welche ebenfalls funktionieren könnten, wenn der entsprechende Treiber installiert wäre. Sollte mit ODBC gehen.

Das Manual kann dir an dieser Stelle mehr verraten, als ich in 2 Stunden zusammen tragen könnte: http://de.php.net/manual/de/ref.sqlite.php
Wenn du PHP5 drauf hast, kannst du sogar PDO_SQLite nehmen, was sicherheitstechnisch die bessere Variante wäre.

Für Access hab ich grad nix gefunden, außer ein englisches Tutorial: http://www.phpfreaks.com/tutorials/61/0.php

Gruß
 
Zurück