Beiträge von cottton

    Das hier:

    PHP
    $_POST['pos[pos]']


    sollte so aussehen:

    PHP
    $_POST['pos']['pos']

    Tipp: bei den vielen echos sieht man nicht durch.
    Würde empfehlen:


    oder:

    Du verwendest (was ich Deinem Code entnehme) bei der Aktivierung sicherlich eine Query wie

    SQL
    select * from users where aktivierungscode = :aktivierungscode


    denn du nutzt keine userid im Link - was nicht schlimm ist.
    Es könnte mit rand() aber vorkommen, dass 2 order mehr User den gleichen Aktivierungscode besitzen/bekommen.
    Dadurch kann User A evtl User X aktivieren.
    Vorschlag: siehe code

    Evtl auch die Fehler beim prepare und execute abfangen, damit Du weißt, was nicht geht, wenn was nicht geht.
    + htmlspecialchars im Emailtext und den Link als Link (a tag) einbauen.

    Ansonsten wäre es interessant, was (wie Basi schon sagte) das Feld aktivierungscode für ein Type ist.

    Die Typen kann man Fälschen.
    Eine Datei my.png kann auch ein Javascript sein, das einfach nur mit einer andere Endung versehen wurde.

    Die Funktion imagecreatefromstring nutzt die Rohdaten (deswegen file get contents) um ein neues Image zu erstellen.
    Sollten die Rohdaten nicht ~"von einem Bild" stammen, kann diese Funktion kein Bild erstellen.
    Und genau dann wei0t Du , dass jemand versucht hat etwas anderes hochzuladen.

    Es gibt sicherlich noch andere Wege. Ich fand diesen Weg einfach recht simpel und sicher.

    Bsp:

    Siehe auch comment => http://php.net/manual/de/func…tring.php#94254

    Prüfe beim Upload, ob es ein Bild ist. Wenn nicht, dann Fehler und verwerfen.
    Guck mal in Google nach "php check if uploaded file is image".
    (Ich empfehle da imagecreatefromstring( file_get_contents($source) ); -- wenn es kein Bild ist, gibt es einen Fehler)

    Nutze beim Speichern der Bilder und Namen der Dateien in SQL eigene Namen (zb md5(filename)).

    Stimm, das geht net.
    Manche Fehler findet man alleine nicht am gleichen Tag. Ist öfter so. Am nächsten Tag guckt man sich das an und denk "oh man, ist doch klar ... " :)
    Schön, dass es funktioniert =)

    Das sollte aber so funktionieren.
    http://php.net/manual/de/function.move-uploaded-file.php
    bool move_uploaded_file ( string $filename , string $destination )
    Du kannst ja mal testen, was die Funktion zurück gibt. Evtl guckst Du auf "alte Files" und die eigentlichen wurden nicht verschoben.

    Teste mal:

    PHP
    $path = 'images/vorstand/';
    $destination = $path . $_FILES['uploaddatei']['name'];
    var_dump(is_writable($path));  
    $result = move_uploaded_file($_FILES['uploaddatei']['tmp_name'], $file);


    Info am Rande: beim Fileupload werden die Dateien in das tmp Verzeichnis gelegt.
    Dateien, die dort drin verbleiben, werden nach Ablauf des PHP Scripts automatisch gelöscht (wenn nicht um-/abgestellt).

    Ja ich weiß aus dem anderen Topic, dass man Variablen nicht direkt in die SQL-Befehle schreiben soll.


    Ich wollt schon los meckern :D

    Das könnte sein, da Du WHERE ip_adresse = '$ip'" abfragst.
    Wenn nun zB das Feld `ip` in der DB ein (nur Bsp) VARCHAR(10) ist, aber eine ipv6 reinkommt,
    und kein sql_mode = STRICT_ALL_TABLES aktiviert ist,
    dann werden nur die ersten 10 Zeichen in das Feld geschrieben.
    (wenn STRICT_ALL_TABLES on/an ist, dann gibts Fehler geschmissen - was richtig und gut ist/wäre)

    kurz: es kann sein, dass Du nach 12345 suchst, aber nur 1234 im Feld steht, da nicht mehr Platz reserviert wurde.


    Tipp: ips speichern (v4 und v6)
    NTOA und ATON

    Wenn Du immer ausgeben möchstest, ob die ip schon vorhanden war, dann musst Du wohl immer eine Abfrage der ip durchführen.
    Wenn Du das nicht brauchst, dann empfehle ich ON DUPLICATE KEY UPDATE:

    SQL
    INSERT INTO `tblname` 
    SET 
        `ip` = INET6_ATON(:ip)
    ON DUPLICATE KEY UPDATE `id` = `id`;


    Was passiert hier:
    (Ich gehe von fortlaufender id `id` aus)
    todo: Setze das Feld `ip` auf UNIQUE ( UNIQUE INDEX `uidx_ip` (`ip` ASC) )
    Der mysql Server bekommt die Aufgabe eine Zeile einzufügen mit der ip x.
    Sollte die ip nun schon vorkommen, würde der Server einen Fehler schmeissen.
    Aber - wir haben ihm gesagt: ON DUPLICATE KEY (wenn key (feld) ein Duplikat verursachen würde) UPDATE `id` = `id`

    Note. Es könnte auch heissen: ON DUPLICATE KEY UPDATE `updated_at` = NOW(), `user` = :user, ...
    (~ wenn Duplikat dann mach das)

    Bei der id = id Variante wird der Server nichts machen (keine unnötige Artbeit). (Warum genau -> google, bekomms grad nicht zusammen)


    So, das war wiedermal viel von mir ... :D sollte aber alle klar sein. =)

    guck mal hier:
    http://php.net/manual/de/mysqli.quickstart.php
    http://php.net/manual/de/pdo.connections.php

    Im Forum hatten wir die Themen auch schon öfter.
    Egal für welche Version Du Dich entscheidest - wenn was unklar ist, einfach frage (gerade bei Sachen Sicherheit).

    Note: wenn Du mit Klassen in PHP noch nichts gemacht hast, dann könnte mysqli_ Deine Wahl sein.
    Empfehlen würde ich PDO - musst Du aber entscheiden.

    Was Du tun musst, ist die Methoden (zB Verbindung zur DB) auszutauschen. (Fehler abfangen nicht vergessen)

    Das könnte sich schwierig gestallten.
    Ich verstehe gerade nicht, warum und wie Du die Dateien speicherst.

    Am besten Du postest mal nen Screenshot, damit man sich was vorstellen kann (Daten schwärzen).
    Und dann in müsste man wissen (in Stichpunkten), wie der momentane Ablauf ist.

    Nutzt Du PHP? Javascript?
    Im normal Fall würdest Du ein Formular haben, in dem Du Daten anzeigst,
    evtl noch ein zweites, um neue Datensätze an zu legen (anzulegen? :D).

    Die Daten sollten dann in einer Datenbank gespeichert werden (nicht in Dateien).
    (Falls Du PHP noch nicht kennst: http://www.php-kurs.com/erstes-php-programm.htm)

    Was?
    Von jedem User -1 (was) von Tagen abziehen?
    Also bei jedem User einen Tage abziehen?

    Kommt auf jeden Fall auf den Feldtyp an (DATE, DATETIME, VARCHAR; INT ?).

    Falls es ein INT ist, dann könnte das so aussehen:

    SQL
    UPDATE user_table SET user_days = user_days -1;


    Das dann in einer Schleife.
    Und hier kommt es auch wieder darauf an: wie viele User sind es?
    Bei 100 könnte man das mit einer Schleife in PHP erledigen.
    Bei tausenden oder mehr sollte man es sich überlegen, ob es komplett vom SQL Server erledigt werden soll ("Stored Procedures").

    Also Du sicherlich hast ein Container:

    HTML
    <video id="vid_frame">
        <source src="video.ogg" type="video/ogg" />
        <source src="video.mp4" type="video/mp4" />
        <!-- ... -->
    </video>


    In dem video object legst Du erstmal alle formate an, die Du zur Verfügung stellst:

    HTML
    <video id="vid_frame">
        <source src="" type="video/ogg" />
        <source src="" type="video/mp4" />
        <source src="" type="video/webm" /> 
        <!-- m4v kenn ich nicht -->
    </video>


    Source haben die im Moment keine.
    Onclick willst Du ja aber das Video x in dem vid_frame laufen lassen.
    Also greifst Du Dir das Video Element und updates alle seine (Childs) src.
    Gedankengang:

    HTML
    < ... onclick="updateSrc(1)"

    Naja, Du kannst ja noch paar Sachen einbauen, die keinen großen Aufwand verursachen.
    zB eine Tabelle für wrong Logins.
    Wenn der Login falsch war, dann speicherst Du das ab like

    SQL
    insert into tbl_wrong_logins set user_id = :userid, user_ip = :userip, date = now(); -- usw


    Das wäre schon mal eine Tabelle.
    Die könntest du btw auch für die blacklist nutzen. Wenn zuviele Einträge in der wrong_logins in einem bestimmen Zeitraum, dann ab auf die Blacklist.
    like:

    SQL
    select user_id from wrong_logins where date between :startDate and now();
    PHP
    <?php
    if(count($result) > $maxWrongLogin){ /*hier sql insert into blacklist*/ }

    Zur user table:
    Thema Sinnvoll (da kannste argumentieren) - es ist sinnvoll, dass man die Telefonnummern in einer extra Tabelle ablegt.
    Warum?
    1 User kann n Telefonnummern haben.
    (Wäre also wieder eine Tabelle)

    Und das geht so weiter: 1 User kann n Adressen haben ((Haupt)Wohnsitz, Firma, ...)
    ^^

    Erstmal ist da ein Fehler drin.
    Es muss

    Code
    if(myArray[i]

    ([i] fehlte) heißen.

    Deutung:


    Ausgabe: 99

    Sieht mir so aus, als solltest Du die Abteilung wechseln - evtl in die Entwicklung wechseln :D

    Wenn es nicht erlaubt ist, ist es nicht erlaubt.
    Man müsste schon jemand drauf ansetzen, um das Tool zu "überwachen".
    Wird es abgenommen, dann darf nichts mehr daran geändert werden.
    Aber wer überwacht das?

    Du kennst doch sicher die Texte auf Seiten "die Links auf dieser Seite ...." in denen man sich absichert, dass man nicht für verlinkte Inhalte verantwortlich ist.
    Und so kann es kommen - Du nutzt einen Link (intern wie extern) und das Ziel (die Datei oder was auch immer dort liegt) wird gezogen und richtet Schaden an.
    Was dann?

    Das hier:

    HTML
    -->
    </style>
    ...Positionierungs- und Beschriftungs-Test <br>
    </head>
    <body>


    gibt Probleme. Du schreibst im <head> ...Positionierungs- und Beschriftungs-Test <br>, was allerdings in den <bod> gehört.

    Du hast also Daten, die Du ausgeben lassen willst. Dazu musst Du Dich mit der Datenbank verbinden -- PDO würde ich auf jeden Fall empfehlen.
    mysql_ Funktionen sind verhaltet und nicht sicher.
    mysqli_ Funktionen(bzw Klassen) wären eine Möglichkeit. Allerdings (meine Meinung) ist myqli einfach nur ein riesen "Kuddelmuddel".

    PDO ist zwar Klassenbasiert only, Du musst Dich also mit Klassen in PHP beschäftigen, aber es lohnt sich - es ist sehr gut dokumentiert und mach (wieder meine Meinung) an allen Ecken Sinn.

    Doku PDO: http://php.net/manual/de/book.pdo.php
    Doku Mysqli: http://php.net/manual/de/book.mysqli.php

    Egal wie Du Dich entscheidest - hier im Forum haben wir Beides schon oft behandelt. Wenn trotzdem irgendwas unklar ist - einfach fragen.