Jump to content
¯\_( ツ)_/¯
  • TAD GROUP are currently hiring penetration testers. Please read the topic in Career Central subforum.
  • Sponsored Ad
ТУК НЕ СЕ ПРЕДЛАГАТ ХАКЕРСКИ УСЛУГИ ! ×
Pulse

помощ със код във php

Recommended Posts

Здравей те, трябва ми малко помощ със един код във php. 

Идеята е следната - направих регистрацийонна форма която след изпълнение да изпраща user-a във profile.php и от там както следва да може да се качва снимки обаче когато се избере снимка за качване се вижда във всички профили, някой можели да ми каже как да въведа id -то на потребителя така че да се изпълнява правилно и да се публикува само във неговия профил а не във всичките 

 

кода е следния 

upload.php

====================================================================================================================================================================================================================================================================================================================

<?php
$msg = "";
if (isset($_POST['upload'])) {
$target = "images/".basename($_FILES['image']['name']);
$db = mysqli_connect("localhost", "root", "", "account");
$image = $_FILES['image']['name'];
$text = $_POST['text'];
$sql = "INSERT INTO image (image, text) VALUES ('$image', '$text')";
mysqli_query($db, $sql);

if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
$msg = "Image Uploaded Successfully";
} else {
$msg = "There Was A problem uploading image";
}
}
?>
<!DOCTYPT html>
<html>
<head>
<title>Image Upload</title>
<link rel="nofollow" type="text/css" href="css/upload.css">
</head>
<body>
<div id="content">
<?php 
$db = mysqli_connect("localhost", "root", "", "account");
$sql = "SELECT * FROM image";
$result = mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($result)) {
echo "<div id='img_div'>";
echo "<img src='images/".$row['image']."'>";
echo "<p>".$row['text']."</p>";
echo "</div>";
}
?>
<form method="post" action="<?php echo $id;?>" enctype="multipart/form-data">
<div>
<input type="file" name="image">
</div>
<div>
<textarea name="text" cols="40" rows="4" placeholder="Say Something about This Image ..."></textarea>
</div>
<div>
<input type="submit" name="upload" value="upload image">
</div>
</form>
</div>
</body>
</html>

====================================================================================================================================================================================================================================================================================================================

 

profile.php

====================================================================================================================================================================================================================================================================================================================

<?php
session_start();
if ( $_SESSION['logged_in'] != 1 ) {
  $_SESSION['message'] = "You must log in before viewing your profile page!";
  header("location: error.php");    
}
else {
    $id = $_SESSION['id'];
    $first_name = $_SESSION['first_name'];
    $last_name = $_SESSION['last_name'];
    $email = $_SESSION['email'];
    $sex = $_SESSION['sex'];
    $active = $_SESSION['active'];
}
?>
<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Welcome <?= $first_name.' '.$last_name ?></title>
    <?php include 'css/css.html'; ?>
</head>
<body>
    <p>
        <?php
            if ( isset($_SESSION['message']) )
            {
                echo $_SESSION['message'];
                unset( $_SESSION['message'] );
            }
        ?>
    </p>
    <?php
        if ( !$active )
        {
            echo
            '<div class="info">
                Account is unverified, please confirm your email by clicking
                on the email link!
            </div>';
        }
    ?>
    <div class="profilepage" >
        <div class="profilebanner">
            <center><div class="container">
                <center><div class="profileimg"></div></center>
                <a href="#">    
                    <div class="overlay">
                        <div class="text">Edit Avatar</div>
                    </div>
                </a>
            </div></center>
            <center><h2><?php echo $id.' '.$first_name.' '.$last_name; ?></h2></center>
        </div>
        <center>
            <div class="profile-big-btn">
                <a href="upload.php"><button class="button" name="send message"/>Upload </button></a>
            </div>
            <div class="profile-small-btn">
                <a href="#"><button class="small-btn" name="photo"/>Gallery</button></a>
            </div>
        </center>
        <div class="profileinfo">
            <p><?= $email ?></p>
            <p><?= $sex ?></p>
            <a href="logout.php"><button class="logout-btn" name="logout"/>Log Out</button></a>
        </div>
        <div class="profilenews">
            <div class="profile-post">
                <center><img src="img/avatar.png" width="50px"></center>
                <center><?php echo $first_name.' '.$last_name; ?></center>
                <div class="pofile-box-post">
                    <?php 
$db = mysqli_connect("localhost", "root", "", "account");
$sql = "SELECT * FROM image";
$result = mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($result)) {
echo "<div id='img_div'>";
echo "<img src='images/".$row['image']."'>";
echo "<p>".$row['text']."</p>";
echo "</div>";
}
?>
                </div>
                <div class="pofile-comentar">
                    <img src="img/avatar.png" width="50px"><?php echo $first_name.' '.$last_name; ?>
                </div>
                <div class="pofile-text">
                        <textarea rows="2" cols="2">
                        </textarea>
                    </div>
            </div>            
        </div>
    </div>
    
<script src="js/index.js"></script>

</body>
</html>

====================================================================================================================================================================================================================================================================================================================

 

register.php

 

====================================================================================================================================================================================================================================================================================================================

<?php
$_SESSION['id'] = $_POST['id'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['first_name'] = $_POST['firstname'];
$_SESSION['last_name'] = $_POST['lastname'];
$_SESSION['sex'] = $_POST['sex'];


$id = $mysqli->escape_string($_POST['id']);
$first_name = $mysqli->escape_string($_POST['firstname']);
$last_name = $mysqli->escape_string($_POST['lastname']);
$email = $mysqli->escape_string($_POST['email']);
$password = $mysqli->escape_string(password_hash($_POST['password'], PASSWORD_BCRYPT));
$hash = $mysqli->escape_string( md5( rand(0,1000) ) );
$sex = $mysqli->escape_string($_POST['sex']);

      

$result = $mysqli->query("SELECT * FROM users WHERE email='$email'") or die($mysqli->error());


if ( $result->num_rows > 0 ) {
    
    $_SESSION['message'] = 'User with this email already exists!';
    header("location: error.php");
    
}
else { 

    
    $sql = "INSERT INTO users (id, first_name, last_name, email, password, hash, sex) " 
            . "VALUES ('$id', '$first_name','$last_name','$email','$password', '$hash', '$sex')";

  
    if ( $mysqli->query($sql) ){

        $_SESSION['active'] = 0; 
        $_SESSION['logged_in'] = true; 
        $_SESSION['message'] =
                
                 "Confirmation link has been sent to $email, please verify
                 your account by clicking on the link in the message!";

         (verify.php)
        $to      = $email;
        $subject = 'Account Verification ( pulsenikolaev@gmail.com )';
        $message_body = '
        Hello '.$first_name.',

        Thank you for signing up!

        Please click this link to activate your account:

        http://localhost/login-system/verify.php?email='.$email.'&hash='.$hash;  

        mail( $to, $subject, $message_body );

        header("location: profile.php"); 

    }

    else {
        $_SESSION['message'] = 'Registration failed!';
        header("location: error.php");
    }

}

====================================================================================================================================================================================================================================================================================================================

 

МЕРСИ ПРЕДВАРИТЕЛНО!

Share this post


Link to post
Share on other sites

Кодът е абсолютно мазало. Правиш по 2 връзки с базата, на всяка страница!? Разгледай практики и методи, преди да преоктиваш света. Може да се напише доста по-чисто и подредено, да не говорим лесно за четене, защото в момента е далеч от такова състояние.

Share this post


Link to post
Share on other sites

Приятелю, не използвай този код. Първо е уязвим към атаки, второ е пълно мазало. Eто ти размишления по темата:
https://stackoverflow.com/questions/33898834/uploading-profile-picture-and-displaying-it
Ето ти един примерен урок, не е много защитен, но пак е по-добре от твоят код:
https://www.codentricks.com/upload-user-profile-image-and-save-to/

Share this post


Link to post
Share on other sites

Ако ще запаметяваш изображението в базата с данни си създай още една колона съдържаща id-то и на потребителя на който е аватара. Така директно ще викаш изображението от базата, когато потребителят е логнат:
 

SELECT * FROM table_image WHERE user_id = $_SESSION["id_sled_logvane"] 


Така само с една заявка след това просто визуализираш редът от базата където id-то на потребителя отговаря на това в полето. 

Share this post


Link to post
Share on other sites

@freeman987 погледнах ги и съм ги ползвал но проблема със https://www.codentricks.com/upload-user-profile-image-and-save-to/ беше че при  презареждане на страницата и снимката изчезна остави туй аз го оправих успях да ги запаметя в базата данни успях да ги визуализирам само и единствено не успях да направя така че всеки потребител да си има собствена снимка --- прост пример е профилните снимки в този форум нещо такова --- снимка на профил бе как да го обясня немога да свържа ид-то на users със id-то на images - направил съм таблица image и таблица users image.thumb.png.988b203f89ff530f90a458c26f8652c2.png 

image.thumb.png.6354d96ebaae614548616ccdd7f5716b.png

Share this post


Link to post
Share on other sites

При тая топология, просто махни таблицата images и премести двете ѝ полета в users.

Иначе прочети за LEFT JOIN в MySQL.

Share this post


Link to post
Share on other sites

@XpoZed мале ама ти си бил голям разбирач бе, явно за да питам във форума значи съм направил сичко възможно, ако помислиш малко ще се сетиш че всяка снимка качена в таблицата image прави нова колона със имато на снимката и някакъв текст (по избор) а ако добавя 2 колони както ти викаш да го преместя в user за всяка снимка ще прави отделна колона ... моля когато не разбирате да не коментирате само и само за да не се излагате мерси

Edited by Pulse

Share this post


Link to post
Share on other sites

Писал си, че искаш да добавиш снимка (единствено число) към към всеки юзър, да не говорим, че дизайна на базата ти предполага същото (като изключим PRIMARY флага на id в images, но това очевидно е защото не си наясно какво точно правиш). Не знам дали аз съм некомпетентен, но преди да задаваш въпроси, отдели време за правилното им формулиране.

Share this post


Link to post
Share on other sites

@XpoZed не знам да ли си разбрал, но май не си наясно със този форум - тука не са сабрани "хареките от цяла България" за да атакуват разни сайтове както се разбира от повечето запитвания в  чата, тука са хора които помагат на тези които питат такива въпроси като@DvDty ясно и точни ми каза че кодът е боза вслушах се в съвета му и написах изцяло нов и изчистен код , все пак съм написал поста защото се вижда ясно че не съм ок с този език и ако смяташ че ще минеш с тоя номер като ми кажеш да почна да уча php  и тем подобни работи няма как да стане повечето хора от форума са самоуки и ясно доказват че този метод е по добър от колкото да прочетеш 10тки книги. Ако смяташ да изразяваш някакво негативно мнение по темата просто недей, просто е излишно.

Edited by Pulse

Share this post


Link to post
Share on other sites
Преди 2 часа, Pulse написа:

@XpoZed мале ама ти си бил голям разбирач бе, явно за да питам във форума значи съм направил сичко възможно, ако помислиш малко ще се сетиш че всяка снимка качена в таблицата image прави нова колона със имато на снимката и някакъв текст (по избор) а ако добавя 2 колони както ти викаш да го преместя в user за всяка снимка ще прави отделна колона ... моля когато не разбирате да не коментирате само и само за да не се излагате мерси

Извинявай, но ще те поправя. Тук при всяка качена снимка, ти не правиш колона а създаваш запис отговарящ на ред. Колоните са ти предварително формулирани (id, user_id, image). Попълвайки запис ти създаваш ред в таблицата (релационна база с данни). Релацията ти е съвкупност от записи (това ти е таблицата). В релацията имаш атрибут, който ти се явява колоната с нейното име. Записа ти се явява ред от въпросната релация а той попълва стойността на колоните. 
300px-Relational_database_terms_bg.svg.p
Колегата искаше да ти предложи едно бързо решение на проблема ти с базата, дори да не е най-правилното такова. За да ти спести обработването на заявки към други таблици просто ти предложи да запаметяваш в таблицата на потребителя още една колона с profile_picture. То ако става на въпрос да са ти отделно таблиците е нещо супер олекотяващо четенето от базата при големи проекти, защото четеш и обработваш по-малко данни, но в случая ти все още нямаш практическа визия над това какво искаш да се получи, и от там нататък как да го реализираш, чрез базата. Не се сърди на колегата, защото втората му забележка свързана с праймъри ключът на таблицата images така структурирана му е много на място! На няколко места ти казах, ако ще използваш тази структура ти е нужна още една колона в таблицата images за да правиш връзка към потребителя на който е снимката. По-нагоре даже и примерен SQL ти написах, за да схванеш какво точно ти казвам. В противен случай си е баш на място първият пост  на колегата, защото реално ти искаш да направиш нещо генерално сбъркано като идея. Впрочем за да избегнеш още ядове с базата и енкодинга използвай utf8_general_ci . При записване на кирилица в базата ще ти излиза шльокавица. Навсякъде използвай UTF-8 енкодинг за да избегнеш проблем с кирилицата. 

  • Like 1

Share this post


Link to post
Share on other sites

@freeman987 твоят отговор се разбира по ясно какво е имал предвид и разбрах в случея аз съм допуснал грешка. Така със твоето обяснение разбрах за какво служи колацията (до някъде), просто грубите отговори както сам разбираш,че ме агресират и за това пиша подобни груби и нескопосани изказвания съжелявам за което, просто пиша една простичка тема и очаквам накакъв простичат отговор като твоя напримерно.

Share this post


Link to post
Share on other sites
Quote

грубите отговори

Къде са ми грубите постове?

Share this post


Link to post
Share on other sites
преди 40 минути, XpoZed написа:

Къде са ми грубите постове?

е запореден път съм допуснал грешка, не съм си отворил добре очите (При тая топология) аз го прочетох тъпология близкиса думите ...  какво друго мога да кажа съжелявам от 3 дена не съм си лягал заради този сайт който се опитвам да правя, да не разбирам от пхп вярно е до сега съм правил сайтове само с помоща на html css и малко js функциите във js и php до някъде са сродни но не съвсем но ваш колега и мой разбирасе ме посъветва да правя сайтове със пхп понеже исках да направя логин форм а в хтмл сайт просто няма как да стане лесно и за това се насочих към този език... както и да е все пак мерси

Share this post


Link to post
Share on other sites
8 minutes ago, Pulse said:

е запореден път съм допуснал грешка, не съм си отворил добре очите (При тая топология) аз го прочетох тъпология близкиса думите ...  какво друго мога да кажа съжелявам от 3 дена не съм си лягал заради този сайт който се опитвам да правя, да не разбирам от пхп вярно е до сега съм правил сайтове само с помоща на html css и малко js функциите във js и php до някъде са сродни но не съвсем но ваш колега и мой разбирасе ме посъветва да правя сайтове със пхп понеже исках да направя логин форм а в хтмл сайт просто няма как да стане лесно и за това се насочих към този език... както и да е все пак мерси

https://phpdelusions.net/

Разгледай този сайт. Ще ти е от полза.

Share this post


Link to post
Share on other sites
преди 11 минути, DvDty написа:

https://phpdelusions.net/

Разгледай този сайт. Ще ти е от полза.

ок разбрах на къде ме насочваш но да тръгна да уча php от 0-та ще отнеме много време но ако греша и този език се учи бързо моля да ме насочите към качествени уроци ако може да са free, не защото ме мързи сам да си търся от къде да уча а защото е много вероятно да попадна на сайт който както е казано в темата която ми прати да е писан от хора които са вземали информация от тук от там

Edited by Pulse

Share this post


Link to post
Share on other sites
преди 28 минути, Pulse написа:

ок разбрах на къде ме насочваш но да тръгна да уча php от 0-та ще отнеме много време но ако греша и този език се учи бързо моля да ме насочите към качествени уроци ако може да са free, не защото ме мързи сам да си търся от къде да уча а защото е много вероятно да попадна на сайт който както е казано в темата която ми прати да е писан от хора които са вземали информация от тук от там

Youtube и канала на Иван Ванков. Има страшно много уроци по темата. Просто гледаш и слушаш, останалото е практика. 

  • Like 1

Share this post


Link to post
Share on other sites

@freeman987 @DvDty  @XpoZed Мерси за помоща и съжелявам за грубия език който използвах, нека да не оставяме с грешно впечатление един за друг.

  • Like 1

Share this post


Link to post
Share on other sites

@freeman987 за същият канал ли говорим или? защото не виждам уроци по пхп

 

image.thumb.png.14326ee53a8aec728e78e9dae1a13f9b.png

Share this post


Link to post
Share on other sites

Не е въпроса в езика, а в желанието да се развиеш. Няма да е лесно и няма да се научиш ако не опитваш. Да с питане става, но за малки неща (функции, методи, алгоритъм). Няма как да ти напишем ние кода, но можем да те насочим и да ти помогнем с липсващи фрагменти. Да напаснем по-добре нещата, поради което е и нужно малко по-спокойно да реагираш, да спреш и да помислиш. И аз се уча, както ти и аз много неща не знам, но когато питам уважавам желанието за помощ от колегите и се замислям над думите им. Направиш ли го и ти, ще разбереш, че по-бързо ще се развиеш. Ние ти даваме химикала и листа а ти трябва да напишеш желаното. 

  • Like 1

Share this post


Link to post
Share on other sites
3 hours ago, Pulse said:

ок разбрах на къде ме насочваш но да тръгна да уча php от 0-та ще отнеме много време но ако греша и този език се учи бързо моля да ме насочите към качествени уроци ако може да са free, не защото ме мързи сам да си търся от къде да уча а защото е много вероятно да попадна на сайт който както е казано в темата която ми прати да е писан от хора които са вземали информация от тук от там

Сайта, който дадох, не е за от 0-лата, а по темата, за която търсиш информация.

Edited by DvDty
  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.