Profil Edit Fehler

TamasL

Mitglied
Hallo Helfer und Helferinnen,

ich bin es "schon" wieder :'(

Ich hab ein Problem ich habe einen Auftrag von einem Kunden übernommen ... dessen Vorgänger hat eine Profil Edit angelegt die nicht ein bisschen funktioniert ...

Hier die profiledit.php

PHP:
<?php
/**
 * Profil editieren
 */
?>

<?php
/**
 * Berechtigungsabfrage
 */

if (!isset($_SESSION['UID'])) {
    echo 'Du hast keine Berechtigungen für diese Funktion!';
    return;
}

$user = (int)$_SESSION['UID'];

/* Datenbankabfragen */


$sql = "SELECT * FROM user WHERE id = $user";

$the_query = mysqli_query($DBCON,$sql);

$row = mysqli_fetch_assoc($the_query);


/**
 * Funktion zum Darstellen des HTML-Values
 * @author Malte Zwillus
 */
function the_html_value($db_entry)
{
    /* Wurde überhaupt ein Parameter gesetzt? */
    if (empty($db_entry)) {
        return false;
    }

    /* Datenbankabfragen hereinziehen */
    global $row;

    /* Prüft ob Datenbankeintrag verfügbar */
    if ($row[$db_entry]) {

        echo "value='<?php {$row[ $db_entry ]} ?>'";
        return true;

    }
}

/* Prüft ob der Benutzer sein Profil ändert */

if (isset($_POST['profiledit'])) :

    if (isset($_POST['avatar'])) {
        echo "Avatar bekannt";

    } else {
        echo "Avatar unbekannt";
    }

    $uploaddir = '/img/avatar/';
    $uploadfile = $uploaddir . basename($_FILES['avatar']['name']);

    if (move_uploaded_file($_FILES['avatar']['tmp_name'], $uploadfile)) {
        echo "Datei ist valide und wurde erfolgreich hochgeladen.\n";
    }

    print_r($_FILES);

    /* Definiert lokale Variablen */
    $rang = (isset($_POST['rang'])) ? $_POST['rang'] : $row['userstatus'];
    $avatar = (isset($_POST['avatar'])) ? $_POST['avatar'] : $row['avatar'];
    $name = (isset($_POST['name'])) ? $_POST['name'] : $row['vorname'];
    $email = (isset($_POST['email'])) ? $_POST['email'] : $row['email'];
    $url = (isset($_POST['url'])) ? $_POST['url'] : $row['url'];
    $gender = (isset($_POST['gender'])) ? $_POST['gender'] : $row['geschlecht'];
    $bday = (isset($_POST['bday'])) ? $_POST['bday'] : $row['geburtsdatum'];
    $hobby = (isset($_POST['hobby'])) ? $_POST['hobby'] : $row['hobby'];
    $music = (isset($_POST['music'])) ? $_POST['music'] : $row['musik'];
    $farbe = (isset($_POST['farbe'])) ? $_POST['farbe'] : $row['farbe'];
    $essen = (isset($_POST['essen'])) ? $_POST['essen'] : $row['essen'];
    $sig = (isset($_POST['sig'])) ? $_POST['sig'] : $row['signatur'];
    $software = (isset($_POST['soft'])) ? $_POST['soft'] : $row['software'];
    $hardware = (isset($_POST['hard'])) ? $_POST['hard'] : $row['hardware'];
    $genre = (isset($_POST['genre'])) ? $_POST['genre'] : $row['genre'];
    $book = (isset($_POST['book'])) ? $_POST['book'] : $row['booking'];
    $username = (isset($_POST['username'])) ? $_POST['username'] : $row['username'];

    $password = (isset($_POST['rnewpassword'])) ? $_POST['rnewpassword'] : false;


    $sql = sprintf(
        'UPDATE user
        SET
        username = "%1$s",
        userstatus = "%2$s",
        vorname = "%3$s",
        email = "%4$s",
        geschlecht = "%5$s",
        geburtsdatum = "%6$s",
        hobby = "%7$s",
        avatar = "%8$s",
        url = "%9$s",
        signatur = "%10$s",
        musik = "%11$s",
        farbe = "%12$s",
        essen = "%13$s",
        genre = "%14$s",
        software = "%15$s",
        hardware = "%16$s",
        booking = "%17$s"
        WHERE id = %18$d',
        mysqli_real_escape_string( $DBCON, $username),
        mysqli_real_escape_string( $DBCON, $rang),
        mysqli_real_escape_string( $DBCON, $name),
        mysqli_real_escape_string( $DBCON, $email),
        mysqli_real_escape_string( $DBCON, $gender),
        mysqli_real_escape_string( $DBCON, $bday),
        mysqli_real_escape_string( $DBCON, $hobby),
        mysqli_real_escape_string( $DBCON, $avatar),
        mysqli_real_escape_string( $DBCON, $url),
        mysqli_real_escape_string( $DBCON, $sig),
        mysqli_real_escape_string( $DBCON, $music),
        mysqli_real_escape_string( $DBCON, $farbe),
        mysqli_real_escape_string( $DBCON, $essen),
        mysqli_real_escape_string( $DBCON, $genre),
        mysqli_real_escape_string( $DBCON, $software),
        mysqli_real_escape_string( $DBCON, $hardware),
        mysqli_real_escape_string( $DBCON, $book),
        (int)$user
    );
    $the_query = mysqli_query($DBCON,$sql);

endif;

/* Event wenn der Benutzer sein Profil löschen möchte */
if (isset($_POST['delete'])) :

    $sql = "DELETE FROM user WHERE id = $user";

    if ($the_query = mysqli_query($DBCON,$sql)) {
        mysqli_query($DBCON,"DELETE FROM user_online WHERE usID='" . $user . "'");
        session_destroy();
        session_unset();
        echo '<script>alert("Benutzer wurde gelöscht!"); location.href="../index.php";</script>';
    }

endif;

if (isset($_POST['spassword'])) {

    $profil = (int)$_SESSION['UID'];
    $password = mysqli_real_escape_string( $DBCON, $_POST['password']);
    $newpassword = mysqli_real_escape_string( $DBCON, $_POST['newpassword']);
    $rnewpassword = mysqli_real_escape_string( $DBCON, $_POST['rnewpassword']);

    if ($newpassword === $rnewpassword) {


        $sql = "SELECT passwort FROM dbfm_test.user WHERE ID = $profil";
        $the_query = mysqli_query($DBCON,$sql);
        $row = mysqli_fetch_assoc($the_query);

        if (password_verify($password, $row['passwort'])) {

            $sql = sprintf(
                'UPDATE dbfm_test.user SET passwort = "%1$s" WHERE ID = "%2$d";',
                password_hash($newpassword,PASSWORD_BCRYPT, array("cost" => 12)),
                $profil
            );

            if ($the_query = mysqli_query($DBCON,$sql)) {
                echo 'Datenbank update erfolgreich!<br>';
            }


        } else {
            echo 'Altes Passwort ist nicht korrekt.';
        }

    } else {
        echo 'Die Passwörter stimmen nicht überein.';
    }
}

?>
<div class="useredit">
    <form method="POST" enctype="multipart/form-data" id="form1">

        <label for="username">Username: <?php echo $row['username']; ?></label>

        <?php

        /**
         *Rangvergabe
         *Nur sichtbar wenn User den Userstatus Administrator besitzt
         */
        if ($row['userstatus'] > 2) :

            ?>
            <label for="rang">Rang:</label>
            <select name="rang">
                <option value="<?php echo $row['userstatus']; ?>" selected="selected">

                    <?php
                    switch ($row['userstatus']) {
                        case '1':
                            echo 'User';
                            break;

                        case '2':
                            echo 'Team';
                            break;

                        case '3':
                            echo 'Administrator';
                            break;
                    }
                    ?>

                </option>
                <option value="1">User</option>
                <option value="2">Team</option>
                <option value="3">Administrator</option>

            </select>

        <?php endif; ?>

        <label for="avatar">Profilbild:</label>
        <input type="file" name="avatar" accept="image/*">

        <label for="name">Vorname:</label>
        <input type="text" name="name" <?php the_html_value('vorname'); ?>>


        <label for="email">Email:</label>
        <input type="text" name="email" <?php the_html_value('email'); ?>>

        <label for="email_hidden">Möchtest du deine Emailadresse verstecken?</label>
        <input type="checkbox" name="email_hidden" value="email_hidden"></input>


        <label for="url">Homepage:</label>
        <input type="text" name="url" <?php the_html_value('url'); ?>>


        <label for="gender">Geschlecht:</label>
        <select name="gender">

            <option value="<?php echo $row['geschlecht']; ?>" selected="selected">

                <?php
                switch ($row['geschlecht']) {
                    case 'n':
                        echo 'Nicht Angegeben';
                        break;

                    case 'm':
                        echo 'Männlich';
                        break;

                    case 'f':
                        echo 'Weiblich';
                        break;
                }
                ?>

            </option>
            <option value="n">Nicht Angegeben</option>
            <option value="m">Männlich</option>
            <option value="f">Weiblich</option>

        </select>


        <label for="bday">Geburtsdatum:</label>
        <input type="text" name="bday" <?php the_html_value('geburtsdatum'); ?>>


        <label for="hobby">Hobbys:</label>
        <input type="text" name="hobby" <?php the_html_value('hobby'); ?>>


        <label for="music">Lieblings Musik:</label>
        <input type="text" name="music" <?php the_html_value('musik'); ?>>


        <label for="farbe">Lieblings Farbe:</label>
        <input type="text" name="farbe" <?php the_html_value('farbe'); ?>>


        <label for="essen">Lieblings Essen:</label>
        <input type="text" name="essen" <?php the_html_value('essen'); ?>>


        <label for="sig">Signatur:</label>
        <input type="text" name="sig" <?php the_html_value('sig'); ?>><br>


        <?php

        /**
         * Moderator oder DJ Profil
         * Nur sichtbar wenn User den Userstatus Team oder höher besitzt
         */
        if ($row['userstatus'] > 1) :

            ?>

            <label for="soft">Software:</label>
            <input type="text" name="soft" <?php the_html_value('software'); ?>/>


            <label for="hard">Hardware:</label>
            <input type="text" name="hard" <?php the_html_value('hardware'); ?>>


            <label for="genre">Musikrichtung:</label>
            <input type="text" name="genre" <?php the_html_value('genre'); ?>>


            <label for="book">Booking:</label>
            <select name="book">
                <option value="<?php echo $row['booking']; ?>">
                    <?php
                    /* Aktuellen Status ausgeben */
                    switch ($row['booking']) {

                        case 'j':
                            echo 'Ja';
                            break;

                        case 'n':
                            echo 'Nein';
                            break;

                    }
                    ?>
                </option>
                <option value="j">Ja</option>
                <option value="n">Nein</option>
            </select><br>

        <?php endif; ?>

        <input type="submit" name="profiledit" value="Editieren" class="inline">
        <input type="submit" name="delete" value="Profil löschen" class="inline"><br><br>

</div>
</form>

<form method="post" id="form2">
    <label for="password">Altes Passwort</label><br>
    <input type="password" name="password" required><br>

    <label for="newpassword">Neues Passwort</label><br>
    <input type="password" name="newpassword" required><br>

    <label for="rnewpassword">Neues Passwort wiederholen</label><br>
    <input type="password" name="rnewpassword" required><br>

    <input type="submit" name="spassword" value="Passwort ändern">
</form>

ich blicke bei diesem Code nicht wirklich durch daher dachte ich mir ... schreibst halt eine neue ...
Leichter gesagt als getan da ich noch nie eine Edit Funktion mit integriertem Upload Funktion geschrieben habe ... Nun meine Frage: Könnt ihr mir vllt Anhaltspunkte geben wie ich das ganze aufbauen kann. Ach so was wichtig ist das ganze wurde/wird mit MYSQLI geschrieben. Ich hoffe ihr könnt mir helfen ... ich hatte auch nicht vorher irgendwas fertiges zu nehmen ... daher bin ich über jeden Link über jeden Anhaltspunkt froh ...


Mit freundlichen Grüßen

Tamas Labanc
 
Ich rate dir, diesen Code zu nehmen und versuchen zu verstehen.
Mit Links und diversen Codeschnipseln wirst du nicht glücklicher.

So oder so. Vergiss zuerst mal alles was Code ist. Überlege dir, was der Code wie machen soll. Das bracuhst du um diesen Code anzupassen oder aber auch um neue Codeschnipsel zusammenzukleben.
 
Naja hast du mal statt move_uploaded_file() gegen copy(); ersetzt und getestet ob der das Bild uploaded?
 
Naja hast du mal statt move_uploaded_file() gegen copy(); ersetzt und getestet ob der das Bild uploaded?
Code:
Avatar unbekannt
Warning: copy(/img/avatar/tamas.jpg): failed to open stream: No such file or directory in /var/www/vhosts/dreambeatsfm.de/dreambeatsfm.de/inc/profiledit.php on line 66
Array ( [avatar] => Array ( [name] => tamas.jpg [type] => image/jpeg [tmp_name] => /tmp/phpaye5Q4 [error] => 0 [size] => 6602 ) )

Diesen Fehler kriege ich nun wenn ich es hochlade.
 

Neue Beiträge

Zurück