Da fällt mir gerade auf die Syntax macht gar keinen Sinn. Oder etwa doch?
Beiträge von DER
-
-
Zitat
"reason" ist die Konstante für die Ausgabe. womit auch immer "reason" beschrieben ist, das wird ausgegeben. Ist ja logisch ne? Völlig logischerweise musst Du uns also erstmal den Code zeigen wo "reason" definiert ist.
Definitionen von Konstanten werden zumeist in einzelnen Dateien ausgelagert, suche die Die definition und zeig die mal her.
-
Axel Wie kommt es dass sowas so unbekannt ist? Auch mir war nur die PHP Variante bekannt, und diese wurde auch immer als gängige Variante vorgestellt. Da kann man sich im Netz noch so viele Tutorials, Videos und Artikel anschauen, es wird so viel Zeug völlig ignoriert... HTML5 Tags leiden ganz besondern darunter.
Es gibt ja Leute die sich Profis nennen und manche Konzepte als "nicht möglich", oder "so schon am besten umgesetzt" absegnen, obwohl es durchaus möglich oder besser umsetzbar wäre. Man fühlt sich so ein bisschen betrogen wenn man glaubt bereits eine gute Methode zu verwenden.
Bei dem Artikel auf der Hauptseite würde mich noch eine Auflistung der Pros und Kontras interessieren, und was man in welchem Falle am besten nutzt.
-
Arne Drews Naja, verbieten kann man es ihm ja nicht. Ist es auch sicher aus der Intention heraus Beiträge zu sammeln?
Never change a running System.
-
Nach einmaligem googlen hab ich das hier gefunden: https://www.monstaftp.com/
Scheint aber kostenpflichtig zu sein. Vielleicht findest Du aber mehr bei Google.
Zu der PHP Library kann ich dir nichts sagen, die kannte ich selbst noch nicht.
Vielleicht sollte ich dir danken, dank dir kenne ich sie jetzt
-
Ich selbst hab mal ein Dokumenten Upload programmiert. Zulässig sollten HTML, CSS und JPEG Dateien sein. HTML und JPEG ist einfach zu überprüfen. Der Server selbst kann die HTML Dateien auf Doctype und weitere benötigte Attribute testen. Bei JPEG das gleiche. CSS Dateien haben aber ein Problem. Die haben keinen Identifier im Quellcode. Das ist sind schonmal Sachen die man bedenken muss, wenn man drauf achten will dass der User nur 'richtige' Dateien hochlädt.
Ich gehe aber mal davon aus, dass Du das ganze für dich selbst nutzen willst. Dateiupload ist in diesem Falle schön einfach. Wenn Du sicherstellen kannst das nur Du Zugriff drauf hast, sind Sicherheitsfragen nicht so wichtig. PHP schafft direkte Abhilfe mit move_uploaded_file() und so weiter. Die Dateien kannst Du übrigens auch in Unterverzeichnisse speichern.
Jetzt kommt die Preisfrage mit dem bearbeiten. Vom Code her habe ich es noch nicht durchdacht, aber theorethisch sollte es möglich sein eine Datei innerhalb einer <textarea> zu includen. Etwa so:
Damit könnte nach meiner Auffassung der gesamte Code in das Textfeld gepackt werden, womit man den auch bearbeiten kann.
Das Problem kommt erst bei PHP Dateien auf, denn da bleibt der Code ja bekanntlich auf dem Server.
Die Sache abzuspeichern ist auch kein großes Ding. Muss ich glaube ich nicht weiter erläutern.
Wenn man wirklich Spaß hat, kann man ein Javascript Fest anstellen und die Syntax highlighten. Funktionen schön in Blau, Strings in Gelb, Variablen in Weiß, etc...
Und da habe ich das ganze jetzt hier erläutert, und dann noch schnell mal gegooglet, guck mal hier:
http://php.net/manual/de/book.ftp.php
PHP stellt ne ganze Library zur Verfügung. Genau für deinen Anwendungszweck.
-
Nö, empty() leert nichts, empty() prüft, ob ein Element als leer interpretierbar ist.
Das ist JQuery. Nicht mit dem php empty() verwechseln!
-
Hab den Fehler zwar gefunden, dennoch recht unerklärlich für mich warum es nicht schon eher aufgetreten ist. empty() leert den gesamten Container, zusammen mit #messageBox
-
Jep funktioniert tatsächlich. Aber am restlichem Code ist nichts falsch. Es müsste eigentlich angezeigt werden.
-
Hi, leider muss ich mich nochmal an euch wenden, denn leider finde ich den Fehler nicht...
Gestern bemerkte ich dass mein Script nicht mehr richtig funktioniert. Als ich es geschrieben habe hat es noch einwandfrei funktioniert. Technisch verwende ich JQuery um die Ajaxabzuschicken, um eine rückgabe zu erhalten greife ich schlicht auf das "echo" zurück, welches von Ajax zuerst abgefangen wird.
Script:
Code
Alles anzeigen<script> function main() { $('#createLink').on('click', createLink); $('#deleteAccount').on('click', deleteAccount); $('#lockAccount').on('click', lockAccount); } function createLink() { $('#cont').empty(); $('#cont').append('<h2>Create Link</h2>'); $('#cont').append('<form id="linkForm">'); $('#linkForm').append('<input type="text" placeholder="Name of your Link" name="link">'); $('#linkForm').append('<input type="hidden" name="hidden" value="1">') $('#linkForm').append('<input type="submit" value="Save">'); $('#linkForm').on('submit', function(event) { event.preventDefault(); $.ajax({ url: '/forms/linkForm.php', data: $('#linkForm').serializeArray(), type: 'post', success: function(data) { $('#messageBox').html(data); } }); }); } function deleteAccount() { $('#cont').empty(); alert('Attention! You are about to delete your Account!'); $('#cont').append('<p>Do you want to delete your account now?</p>'); $('#cont').append('<form id="deleteForm">'); $('#deleteForm').append('<input type="password" name="password" placeholder="enter your password">'); $('#deleteForm').append('<input type="hidden" name="hidden" value="1">'); $('#deleteForm').append('<input type="submit" value="Delete">'); $('#deleteForm').on('submit', function(event) { event.preventDefault(); $.ajax({ url: '/forms/deleteForm.php', data: $('#deleteForm').serializeArray(), type: 'post', success: function(data) { $('#messageBox').html(data); if(data == "One moment please...") { window.location.href = "/log-out.php"; } } }); }); } function lockAccount() { $('#cont').empty(); alert('Attention! You are about to lock your Account'); var date = new Date(); var day = date.getDate()+1; var month = date.getMonth()+1; var sixthMonth = date.getMonth()+7; var year = date.getFullYear(); if(day < 10) { day = '0' + day } if(month < 10) { month = '0' + month } if(sixthMonth < 10) { sixthMonth = '0' + sixthMonth } var currentDate = year + "-" + month + "-" + day; var inSixMonths = year + "-" + sixthMonth + "-" + day; var valueDate = '<input type="date" name="date" value="' + inSixMonths + '" min="' + currentDate + '">' $('#cont').append('<p>Do you want to lock your account now?</p>'); $('#cont').append('<form id="lockForm">'); $('#lockForm').append('<input type="password" name="password" placeholder="enter your password">'); $('#lockForm').append(valueDate); $('#lockForm').append('<input type="hidden" name="hidden" value="1">'); $('#lockForm').append('<input type="submit" value="Lock account">'); $('#lockForm').on('submit', function(event) { event.preventDefault(); $.ajax({ url: '/forms/lockForm.php', data: $('#lockForm').serializeArray(), type: 'post', success: function(data) { $('#messageBox').html(data); if(data == "One moment please...") { window.location.href = "/log-out.php"; } } }); }); } window.addEventListener('load', main); </script>
php:
PHP
Alles anzeigen<?php if(empty($_POST['link']) or empty($_POST['hidden'])) { foreach($_POST as $key => $value) { if(empty($value) or !isset($value)) { echo "$key is empty.<br>"; } } exit; }else { $link = $_POST['link']; $link = strip_tags($link); $hidden = $_POST['hidden']; $hidden = strip_tags($hidden); session_start(); require '../../inc/db/connect.php'; $checkLink = $connection ->prepare("SELECT link FROM linksystem WHERE link=?"); $checkLink -> execute([$link]); $linkExitsts = $checkLink -> fetchColumn(); if($linkExitsts) { echo "Sorry, this Link already exists. Please choose a different name"; $connection = null; exit; }else { $id = $_SESSION['userDatas']['id']; $saveLink = $connection -> prepare("UPDATE linksystem SET link = ? WHERE userid = ? LIMIT 1"); if($saveLink -> execute([$link, $id])) { echo "Link wurde gesetzt."; $connection = null; exit; } } } ?>
Zu beachten ist jetzt das JS. Es scheint alles außer die AJAX request zu funktionieren. Zumindest nicht immer. Die ajax in createLink funktioniert gar nicht, die in lockAccount anscheinend schon, gibt aber nur ein Resultat zurück, wenn alles stimmt, der Account also gelocked wurde.
Jetzt frage ich mal in die Runde: Liegts daran dass ich kein json_decode verwende, oder hat es andere Hintergründe. ( Sonst sehe ich jeden Code im Netz mit json_decode arbeiten, da die standard Variante aber auch funktionierte sah ich keinen Grund das zu nutzen )
EDIT: Errors gibts nicht, urls sind richtig, sonst würde es bei dem lockAccount() ja auch keine Rückgabe geben.
-
Ne, irgendwie gefällt mir das noch nicht. Also das ganze System. Es ist einfach viel zu kompliziert. Das muss doch leichter gehen. Deine Ideen haben das System zwar vereinfacht aber selbst dann ist es meiner Meinung nach noch zu kompliziert.
Ich versuch das nochmal runter zu brechen.
Es gibt verschiedene Spiele. Alle haben die gleichen Eingabeaufforderungen, also würde es da schonmal Sinn machen eine einzige Datei für die Eingabeaufforderungen zu machen und diese überall einzubinden. Jedes Spiel braucht mindestens eine JS für die visuelle Umsetzung und eine PHP Datei für das berechnen.
auf der Hauptseite game.php wird das game-interface eingebunden und die html Datei des ausgewählten Spiels. Ab da sollte ja am besten alles von selbst laufen.Also ich könnte jedes Spiel einbinden und es funktioniert.
Zur Zeit habe ich mehrere Dateien die miteinander kommunizieren müssen und eine Datenbank bei der ich den Zweck doch noch nicht ganz verstanden habe. Kann man die Arbeit der root.php nicht dann sowieso direkt in die game-interface.js mit reinpacken?
Oder sollte ich die game-interface.js bei jedem Spiel einzeln hinzufügen?
Das jetzige Konzept passt wie ich finde vorn und hinten nicht.
EDIT: Ich sehe bei anderen Websiten dass sie ein leicht anderes Konzept nutzen. Da wird einmal etwas eingebunden. Also einmal und alle anderen sachen werden dann vom Spielscript geladen. Sowie das game-interface und so weiter.
Ich markier mal basti1012 weil der auch so gerne über sowas nachdenkt.
-
-
Eine Datenbank habe ich in meinem Konzept gar nicht erdacht. Wäre das ne wichtige Sache?
Ich bin schwer vom Begriff, da muss ich nochmal nachhaken
- Ein ganzes Spiel hätte also so eine Dateistruktur:
(Ordner) Spielname
-> index.html - (beinhaltet canvas)
-> root.php
-> controller.php
-> anzeige.js
Zusätzlich gibt es noch die nicht im Spielordner enthaltene game-interface.js die auswertet welche Knöpfe gedrückt wurden. Auswertung wird an root.php geschickt und root gibt es weiter an controller.php. Ich verstehe nur nicht ganz wie es dann weiter geht.
-
-
Ich benutze JQuery, darum mit welchen Mitteln das gemacht wird ging es gar nicht primär, sondern eher um den sicheren Aufbau.
Das erste Script wertet aus welche Aktion vom User ausgeführt wurde. Es gibt 10 Spiele, jedes macht etwas anderes, die Knöpfe allredings sind immer die gleichen. Daher arbeitet das erste Script seperat von den anderen.
Jedes Spiel hat 2 Dateien, eine JS und eine php. Die JS ist dafür zuständig alles beim User anzuzeigen, die php soll alles berechnen. Das System ist so gewählt, damit es schwieriger ist die Daten zu manipulieren. Um sicherzustellen dass auch kein Versuch stattgefunden hat, müssen die Daten nochmal mit den im php script liegenedn Daten abgeglichen werden.
Ich selbst sehe keine bessere Möglichkeit als es so zu machen.
-
Hallo, da das Thema JS und PHP gleichermaßen behandelt wusste ich nicht genau wohin damit.
Es geht hierbei die Umsetzung eines Programmes, welches Daten von Client zum Server sendet, der Server erstellt wiederrum Daten, diese wiederrum gehen zum Client. Der Weg der Daten sieht so aus:
- Client schickt Formular ab/betätigt Knopf
- index.js wertet Formular aus und
- übermittelt das an ein weiteres script.js
- dieses script.js übermittelt das an programm.php
- php erstellt Daten, verrechnet diese und wertet sie aus
- php schickt alles an script.js
- script.js schickt andere Daten an index.js
- script.js stellt alle Daten dar
- script.js schickt sämtliche Daten nochmal an programm.php und einen Datenabgleich zu machen
Das wirkt auf den ersten Blick nicht kompliziert zu programmieren, muss aber so strukturiert sein, dass 1. schnell ist. ( maximal millisekunden ) und 2. erweiterbar ist. Damit meine ich, wenn es ein weiterer Arbeitsschritt eingefügt werden soll, soll das ohne weiteres möglich sein.
Zudem kommt der aspekt der Sicherheit. Warum am ende der Datenabgleich? Um sicher zu stellen dass keiner versucht hat in der JS oder im DOM zu fuschen.
Zusätzlich kann es sein dass noch mehr Ajax Requests stattfinden müssen, in ein und der selben Handlung.
Jetzt wollte ich fragen ob und wie man das angeht. Ist das überhaupt sinnvoll eine PHP und eine JS Datei dafür arbeiten zu lassen? Oder sollte man das ganze anders machen? Hat einer von euch schon mal sowas gebraucht? Oder gibt es bestimmte Librarys für solche Fälle?
-
Aber das Script kann doch auch ohne Formulardaten aufgrufen werden. Das bräuchte dahingehend dann auch eine Sicherheit, wenn empty() das nicht schon abdeckt.
-
Ja, irgendwie ist es schon das was ich brauche, aber ist es dieses "best practise" von dem alle sprechen?
Im php-kurs.com habe ich soweit ich weiß gelernt isset() zu nutzen, empty() wurde nicht einmal erwähnt. Daher nahm ich an mit isset() auf der richtigen Seite zu sein.
Das empty() auch prüft ob die Variable überhaupt existiert wusste ich nicht. Wenn man also sicher überprüfen will ob Felder leer sind oder nicht, worauf soll ich zurückgreifen? Das empty() true bei "0" zurückgibt ist in diesem Fall egal?
-
Sempervivum Ich habe deinen Kommentar nicht extra übersehen, entschuldige bitte!
Aber die sache mit epmty allgemein: Sollte man nicht lieber isset() verwenden statt empty()? empty prüft darauf ob das Formularfeld einen Inhalt hat, allerdings gilt doch ein fall als unset, wenn es leer ist, oder nicht? Außerdem ist "0" laut empty auch true.
-
Arne Drews Ich verstehe das Script nicht ganz. Was genau soll es bewirken? Die Sache mit dem Echo ist soweit ich das sehe auch nicht richtig, das Script läuft auch nach einem Echo weiter.
basti1012 Wenn Du dir das Script nochmal anschaust, siehst Du das ich nur nach dem ersten Feld Frage, mit dem namen "name".