Beiträge von Humbi

    Never LIKE!

    Du willst ganz sicher nicht einen User laden, der einen ähnlichen Namen hat.

    Dann ist ja gut, dass ich das aus dem Kopf geschrieben hab und in meinen Projekten bisher Where = verwendet hab.

    Auch hab ich noch kein Passwort in der Query geprüft.


    Ich dachte mir nur, meine Abfrage sieht so viel aus, das geht bestimmt schneller, besser.

    Aber ich hab auch mal was richtig gemacht. :)


    Danke für den Hinweis!

    Ich würde die Admintabelle streichen, die verursacht nur durcheinander bei den Abfragen.

    Deine Usertabelle könnte so aussehen:

    id username pw (gehasht)
    email admin
    1 CuzImCloud wertgzhujik admin@example.com 1
    2 Stef dfghjkl user@example.com 0


    Dann überprüfst du das Passwort

    $sql="SELECT `id`, `passwort` FROM table WHERE `username` LIKE ?";

    if(password_verify("$eingegebenespw", "$hashausdb")


    Wenn das Passwort stimmt, würde ich anhand der id den Rest auslesen und den Rechtewert sowie user in einer Sessionvariable speichern.

    Sicherlich kann man auch alles auf einmal auslesen oder das Passwort direkt in der query prüfen.


    Wieviele Nutzer willst du denn verwalten?


    Gruß Humbi

    Z.b. in dem du den Status nicht im User verwurstelst. Sondern ein separates Feld dafür vorsiehst.

    Das kannst du beim Login mit abfragen und in der Session speichern.

    Dann musst du auf der Seite nur noch abfragen.


    Vereinfacht gesagt:

    Du hast 2 Arten an Usern, normale User und Admins.

    Dann steht in der Datenbank:

    User Admin

    cloud 1

    Fred 0


    Auf der Seite brauchst du dann nur noch den Wert mit if abfragen und die Seite darstellen oder eben nicht.


    Wenn du mehrere Userarten hast solltest du mal einen Blick auf das Binärsystem werfen.


    Gruß Humbi

    Ohne Code kann man nur raten.

    Poste doch mal den Inhalt der Datei, die auch auf ".php" endet?


    Gruß Humbi

    Hallo cottton,

    danke für deine Antwort. Das mit dem Whitelisting werde ich mir bei Bedarf nochmal anschauen.


    Und sowas hier:

    PHP
    1. "UPDATE `bilderdatenbank` SET $code WHERE `id` = $neu[id]"

    kann böse enden (SQL injection).

    Ich weiß, dass Du die Daten hier selbst setzt.

    Aber bei einem Update, oder wenn Du mal einen Codeblock zum wiederverwenden kopierst, ...

    kann es schnell passieren, dass Du auf einmal Unsichere Daten in die Query schreibst.

    Ja, prinzipiell hast du Recht. Das war jetzt mein erstes richtiges Projekt. (Erste Projekte sollte man meiner Meinung nach nie kopieren ^^).

    Aber grundsätzlich habe ich schon auf Sicherheit geachtet und alle eingehenden Daten die von Menschen ausgefüllt werden erstmal durch Funktionen gejagt.

    Code
    1. function reinigung ($text)
    2. {
    3. //eliminiere Leerzeichen vor und nach dem Text
    4. $bereinigt = trim($text);
    5. //eliminiere HTML Tags
    6. $bereinigt = strip_tags($bereinigt);
    7. return ($bereinigt);
    8. }

    Sollten in einer Zeichenkette eh nur Zahlen oder Text vorkommen gibt es dafür weitere Funktionen, so dass wirklich nur durchkommt was muss.

    Ich weiß, dass man auch Session- und Postvariablen manipulieren kann. Aber dadurch, dass das Script nur im Intranet eingesetzt wird sah ich jetzt keinen Grund so tief abzusteigen.

    Ich werde deinen Vorschlag fürs nächste Mal bzw. für ein Update im Hinterkopf behalten.


    Gruß Humbi

    Hallo Asaak,
    erstmal ein Hinweis, mit PHP kann man auch malen.
    https://www.php-kurs.com/grafiken-erstellen-mit-php.htm


    Ich hätte mit PHP die Erzeugungsparameter für einen Kreisbogen berechnet und die Prozentzahl als Text mit in der Grafik erzeugt.


    Bestimmt gibt es auch elegantere Wege, aber ich versuche Aufgaben so früh wie möglich umzusetzen.
    In dem Fall schon mit PHP vor der Auslieferung anstatt mit Javascript als Manipulation.


    Gruß Humbi

    Moin,


    Du vergisst, dass HTML eine Programmiersprache zum reinen Anzeigen von Inhalten ist. Bis auf vlt. ein paar Ausnahmen.
    Aber für gewöhnlich kommt die Aktion erst durch andere Sprachen wie Javascript oder PHP auf die Seite.


    123meineip.de/ping.php?ho...submit=Ping%21
    Wenn du dein Beispiel mal genau anschaust wirst du feststellen, dass die Dateiendung dieser Seite PHP ist.
    Also führt hier PHP deinen Ping durch z.B. so:

    PHP
    1. $ip = "127.0.0.1";
    2. exec("ping -n 3 $ip", $output, $status);
    3. print_r($output);


    Also gehört das Thema eigentlich in den PHP Bereich.


    Gruß Humbi

    Hallo Gauloise,


    sry aber ich glaub so kann dir keiner helfen.
    Ich hab weder verstanden was du jetzt mit Worddateien willst,
    noch kann dir jemand sagen was du tun musst ohne ein Stück Code.


    Willst du jetzt eine neue SEITE einbauen? Oder einen neuen Kurs in die Seite implementieren?


    Gruß Humbi

    EBM,
    danke, das wars :)
    Das Array kam mit dem zusammenbau im execute nicht klar.
    Mit einem richtigen Array funktioniert es :thumbsup:


    ergibt


    Manchmal sieht man den Wald vor lauter ' " space nicht mehr.
    Hat mich Stunden gekostet und dauerte 2 min :pinch:


    Danke und Gruß
    Humbi

    Man, dieses pdo ist ganz schön launisch ^^
    Das Textfeld und der Merker funktionieren jetzt (einzeln).
    Das Problem bleiben mehrere Einträge auf einmal.


    Die Auskommentierten Zeilen funktionieren alle drei einzeln! Also Datum, User und erledigt.
    Sobald ein zweites dazu kommt gehts nicht mehr.
    Das ist so empfindlich was Leerzeichen und Anführungszeichen angeht :wacko:
    Ausgabe ist:


    Fazit:
    Textfeld geht
    Merker geht
    Textfeld und Merker geht ned
    Datum, User, Zustand jeweils alleine geht
    sobald es irgendwo 2 sind, geht es nicht mehr.
    Sind ' oder " im execute nötig bzw zwingend nötig?
    eher ja, wegen unterschiedlich langen Strings oder?


    Gruß Humbi

    Hallo EBM,


    danke erstmal für deine Antwort.
    Hab beides probiert, beides half leider nicht.


    Was ich glaub vergessen habe zu erwähnen aber aus dem Code hervorgehen sollte.
    Die drei Elemente Textarea, Dropdown und Checkbox sind unabhängig voneinander.
    Es funktioniert nicht mit 3, 2 oder einzeln.
    Die DB bleibt unverändert.


    EDIT: ich meld mich nochmal.
    Hab herausgefunden das mit der checkbox was nicht stimmt.
    Die steht im Prepare immer drin aber es fehlt der Wert dazu :pinch:


    Gruß Humbi

    Hallo Community,


    ich komme bei einem MySQL Problem nicht weiter...
    ich habe folgenden Code:


    Ich vergleiche hier 2 Arrays die genau gleich aufgebaut sind.
    Die IFs erweitern den SQL Befehl wenn die 2 Arrays unterschiedlich sind.
    Ist nichts unterschiedlich wird auch kein Update gemacht.
    Das vardump vom Statement liefert folgendes:

    Code
    1. object(PDOStatement)#3 (1) {
    2. ["queryString"]=>
    3. string(141) "UPDATE `bilderdatenbank` SET `kommentar_kon` = ? ,
    4. `erledigt` = ? , `erledigt_von` = ? , `erledigt_am` = ? , `merker_kon` =
    5. ? WHERE `id` = ?"
    6. }


    Leerzeichen, Backticks, alles ist so wie es sein sollte.
    Das vardump von Werte liefert folgendes:

    Code
    1. string(58) "" jetzt gehts wieder ned", "1", "rb", "2017-03-22", "true""


    Kurze Erklärung:
    Der lange Text ist von einem Textarea, Feld in der DB ist varchar.
    Der zweite Wert "1" ist von einem Dropdown welches 0,1 und e enthält. Das Feld ist varchar.
    Der dritte Wert wird bei Login gesetzt und kommt aus der Session, DB varchar.
    Der vierte Wert spuckt eine Funktion aus und ist immer " heute". Feld in DB ist DATE.
    Der letzte Wert ist von einer Checkbox, Feld in DB ist BOOL.


    Das Textarea wird vorher nacher verglichen und der neue Teil soll in eine neue Tabellenspalte "kommentar_kon" (varchar) geschrieben werden.
    IDs stehen in beiden Arrays und nach denen richtet sich alles.


    Mein Problem ist:
    Der Code den vardump ausspuckt stimmt ja und wenn ich die ? durch die Werte ersetze und im SQL direkt ausführe geht es ja auch.

    SQL
    1. UPDATE `bilderdatenbank` SET `erledigt`='1' ,`erledigt_von`='rb' ,`erledigt_am`='2017-08-12' ,`merker_kon`='1' ,`kommentar_kon`='mach jetzt' WHERE `id` = '16'


    Das errorinfo spuckt HY093 aus.
    Onkel Google sagt, das kann alles sein. Ein Schreibfehler.
    Spaltennamen, Leerzeichen, Anführungsstrichchen alles schon probiert.


    Falls mir jemand helfen kann.
    Danke schonmal.


    Gruß Humbi