Beiträge von Harro

    Hab mir die Sachen durchgelesen.

    Verstehe ich das richtig, daß ich nur Eingabefelder "escapen" muß?


    Hab noch eine Frage:
    strtolower() wandelt großgeschriebene Umlaute nicht in Kleinbuchstaben um.

    Hab das jetzt so gelöst.

    Gibt es eine Funktion, die das macht?

    Code
    1. $ort_decode = strtolower($suchort);
    2. $ort_decode = str_replace("Ä", "ä", $ort_decode);
    3. $ort_decode = str_replace("Ü", "ü", $ort_decode);
    4. $ort_decode = str_replace("Ö", "ö", $ort_decode);

    Hi,

    Habe eben mal nach "escapen" gesucht aber nichts (für mich) verständliches gefunden.

    Mir ist auch das Problem nicht klar und auch nicht was man genau escapen muß.

    Hast Du evtl einen Link wo man darüber mehr erfahren kann?


    Die Single-Quotes hatte ich bereits ersetzt. Ist es das was Du meinst?

    Ich mußte das machen, weil ich sonst die SELECT-Statements nicht speichern konnte.

    Code
    1. $sQueryCh = str_replace("'",'"',$sQuery);

    Gruß Harro

    Ich hoffe sehr dass du die values vorher escapest, sonst hast du dir da gerade eine sql Injection Lücke gebaut - prepared statements verhindern genau das und sind daher die schönere Lösung

    Weiß nicht was das ist "value escapen".

    Kannst Du mir das sagen?


    Ein "prepared Statement" habe ich leider nicht ans Laufen bekommen.

    Hab jetzt 1 1/2 Tage trial & error an diesem Statement gemacht.

    Der Admin hat mir versprochen erneut den Upgrade zu versuchen.


    Konnte das Problem nun endlich lösen.

    Nach einer Stunde Spaziergang und von vorne anfangen.

    Eigentlich bin ich mir nahezu sicher, daß ich genau DAS am Anfang auch versucht habe.


    Egal, nun kann das nächste Problem kommen.


    "<[Microsoft][ODBC Driver Manager] Der Treiber unterstützt diese Funktion nicht" (komischerweise in Deutsch)


    Die Meldung in Deutsch deutet darauf hin, daß der Fehler NICHT vom SQLBase ODBC-Treiber erzeugt wird.

    Alle ODBC-Fehler von SQLBase sind in Englisch.


    Die Meldung kommt scheinbar vom "<[Microsoft][ODBC Driver Manager]"


    Mit einer anderen Programmiersprache (Visual FoxPro) auf diesem Rechner, funktioniert der Insert mit "?".


    Könnte das Problem an meiner Joomla-Version (3.5.1) liegen?


    Gruß Harro

    Du suchst prepared statements

    Hallo SniperSister,

    hab mit dem Prepared Statement getestet.


    Der odbc_Prepare und odbc_Execute sind formal ok.


    Wenn ich das Fragezeichen im Statement drin habe, bekomme ich die Meldung:

    "<[Microsoft][ODBC Driver Manager] Der Treiber unterstützt diese Funktion nicht" (komischerweise in Deutsch)


    Wenn ich das Fragezeichen im Statement durch zwei Hochkommas ersetze, laufen die Befehle technisch, der Insert funktioniert.


    Irgendwie seltsam.


    Hab ich mal für Dich gemacht.

    Danke, verstanden. Werde mich bessern.


    Bin ein Stück weiter. Habe die einfachen Hochkommas gegen doppelte getauscht.

    Damit ist der String erst mal formal ok.

    Code
    1. $sQueryCh = str_replace("'",'"',$sQuery);

    Schon gibt es die nächste Herausforderung:


    Ich möchte den String in einem MEMO-Feld speichern.

    Dazu muß das Feld über eine Bind-Variable "angeliefert" werden.

    Wie mache ich das?


    In den mir bekannten Programmiersprachen geht das so:

    Code
    1. sQuery = "Select * from meineTabelle where Irgendwas = '123' "
    2. mySQL = "INSERT INTO KIS_Protocol ( SQL_Befehl ) VALUES ( ?sQuery )"
    3. retcd = SQLEXEC(gnConnHandleKnG, mySQL)


    wenn ich das analog in PHP versuche, klappt das mit der Variablen "?sQuery" nicht.


    Code
    1. $sQuery = "Select * from meineTabelle where Irgendwas = '123' ";
    2. $sQuery = str_replace("'",'"',$sQuery);
    3. $sInsertBef = "INSERT INTO KIS_Protocol ( SQL_Befehl ) VALUES ( ?$sQuery )";
    4. $sInsertAbfrage = odbc_exec($gupta_connect, $sInsertBef);
    5. Wenn ich das ausführe, steht in dieser Variablen "$sInsertBef ":
    6. INSERT INTO KIS_Protocol ( SQL_Befehl ) VALUES ( ? Select * from meineTabelle where Irgendwas = "123" );
    7. Die Variable wurde aufgelöst.

    Wie erreiche ich, daß die Variable nicht aufgelöst wird ??


    Hoffe, ich konnte mich verständlich ausdrücken.

    Gruß Harro

    Hallo zusammen,

    ich möchte SQL-Statements - neben anderen Daten - in einer Tabelle in einer SQL-DB speichern.


    Dazu baue ich mir einen Insert-Befehl in der Variablen "$sQuery".



    Grundsätzlich klappt der INSERT auch.


    Aber beim SQL-Befehl - der gespeichert werden soll - leider nicht.

    Variable "$sQuery"

    Wie kann ich Variable "$sQuery" so kapseln, daß der SQL-EXEC dies nur als Daten betrachtet und nicht als Befehl?


    Hat jemand einen Tipp?


    Danke Harro

    Keine Ahnung, ob man damit den Browser durcheinander bringt, aber ist denn die echo-Zeile in search.php so korrekt hinsichtlich ">" und "<" ?


    Was sollen diese Zeichen bewirken?

    Die Zeichen bewirken das sie das angezeigte Feld optisch begrenzen.

    Wenn diese Zeichen "><" direkt aneinander stehen, ist das gezeigte Feld leer.


    Mache ich gerne zum debuggen.


    Gruß Harro


    Evtl. kann man die Variable global definieren, dann aber in allen Funktionen wo sie gebraucht wird.

    Danke das war's.

    Hatte ich nicht erwartet.

    Ich hatte die Variable nur in der ersten Funktion als GLOBAL definiert.

    Meine Erwartung war, sie würde dann "nach unten weiter gereicht".


    Gruß Harro

    Hallo zusammen,

    ich quäle mich schon seit Stunden mit der Verwendung einer Variablen.

    Hoffe ich beschreibe nun genug, damit jemand etwas sagen kann. :)


    In der Controller.php bestücke ich eine Variable "$wkisuser"

    function search(){

    ...

    $wkisuser = htmlspecialchars($user->get('username')) ;

    echo "<BR>Benutzer: ".$wkisuser. "<BR>"; <== Im Echo sehe ich auch den korrekten Wert.


    Im File search.php möchte ich nun mit dieser Variablen arbeiten.

    function getAuftragsnummer() {

    ....

    echo "<BR>Benutzer angemeldet: >" . $wkisuser . "<";

    ....


    Zum Test habe ich das obige ECHO eingebaut.

    Leider ist die Variable immer leer.


    Hatte die variable bereits in der Controller.php als global definiert.

    Leider ohne Erfolg.


    Vielleicht hat jemand den zündenden Tipp.


    Schon mal danke

    Harro

    Muß noch mal nachkarten ... zum Thema Anlegen von Datensätzen mit Copy&Paste.


    Beim manuellen Anlegen der Benutzer mit Copy&Paste habe ich mich 4 Mal ver"pastet".

    Man sieht ja nicht was man in ein Password hineinkopiert, es muß ja nur 2 Mal das Gleiche sein.

    Hab ich gemerkt, weil ich alle Benutzer-Logins getestet habe.

    Wäre ja ärgerlich und schafft kein Vertrauen, wenn ein neuer Benutzer sich nicht anmelden kann.


    Das ist auch ein Grund warum ich Copy&Paste in den meisten Fällen nicht mache.

    Wenn ich die Arbeit mit einem Script oder Programm erledige, ist das Ergebnis vorhersehbar, korrigierbar und vor allem wiederholbar.

    Außerdem trainiert das die Techniken solcher Tätigkeiten und mir macht es auch noch Spaß.


    Gerade erfahre ich, daß ich knapp 1.000 Benutzer anlegen und pflegen muß.

    Spätestens jetzt ist ein Programm für mich unverzichtbar.


    Aber natürlich jeder wie er mag.


    Gruß Harro

    In der Zeit, die hier im Thread schon aufgewendet wurde, wären die User schon längst händisch angelegt ;-) Gibt ja schließlich den "Speichern und Neu"-Button beim Anlegen von Usern und der Rest ist Copy/Paste. STRG+C, STRG+V.

    Hi,

    hab um schnell fertig zu werden, die ersten 36 Benutzer von Hand angelegt.

    Ich finde für solche Arbeiten Copy&Paste schon ätzend. Da bastel ich mir lieber ein Programm.


    Es geht hier nicht nur um das Anlegen von Usern, sondern um permanente Benutzer-Pflege.

    Und die will ich wirklich nicht von Hand machen.


    Ich bekomme eine normierte Excel-Liste von den Kunden meines Kunden mit AktionsCode für:

    - neue Benutzer

    - Änderungen Benutzer (zB EMail-Adresse)

    - Löschen ausgeschiedener Benutzer


    Ich prüfe per Programm:

    - Ist die Excel-Liste formal korrekt (Spaltenüberschriften)

    - Benutzer noch nicht vorhanden, bei Neuanlage

    - Benutzer vorhanden, bei Änderungen und Löschen

    - Email-Adresse formal korrekt

    - die Feldinhalte werden 1:1 geladen ( die Verantwortung für die Inhalte trägt der Kunde )


    Die geprüfte Liste wird durch mein Programm abgearbeitet.

    Auslösen tut das ein Mitarbeiter bei meinem Kunden.


    Klar war das erst Mal aufwendig.

    Aber ich muß ja auch erst mal kennen lernen, was geht und was nicht.

    Gestern wußte ich noch nicht wie man HASH-Werte in diesem Zusammenhang erzeugt und nun geht schon alles.

    Finde ich nicht so schlecht.


    Ob ich nun das PW anlege oder nicht kann mein Kunde entscheiden. ( Ich kann jetzt ja beides :) )


    Gruß Harro

    In dem unter #2 genannten Link steht wo man es in Joomla machen kann, wie man es durch weitere Plugins unterstützen kann und der wichtige Einwand, dass die Komplexität nicht das einzige entscheidene ist sondern auch die Einzigartigkeit. Der Thread ist echt gut (auch wenn der Titel erstmal sehr kritisch ist) sind die detailreichen Ausführungen darin sehr gut!


    EDIT:

    Post #17 ist es übrigens im anderen Thread.

    Hallo Johannes,

    danke hab's gefunden.

    Damit ist man gut bedient.


    Das passiert, wenn man zu flüchtig und schnell liest .... search