테스트 사이트 - 개발 중인 베타 버전입니다

회원정보 수정시 headers 에러문의 채택완료

타버린나무 3년 전 조회 2,113

회원관리 하는 소스를 하나 퍼와서 공부중입니다.

 

예전 소스라서 그런지 수정할데가 많더군요. 없는 지식으로 조금씩 수정해나가고 있는데..  막히는게 있어서 문의드립니다.

 

</p>

<p><?php 

include ('db.php'); 

include ('header.php'); 

$ID=$_GET['id'];

?>

<body></p>

<p>

<div class="container">

<div class="hero-unit-header">

 <div class="container-con">

<!-- end banner & menunav --></p>

<p><div class="container">

<div class="row-fluid">

<div class="span12">

<div class="row-fluid">

<div class="span3"></div>

<div class="span6"></p>

<p>

<div class="hero-unit-3">

<center></p>

<p><?php

  $query=mysqli_query($con,"select * from student where student_id='$ID'")or die(mysqli_error());

$row=mysqli_fetch_array($query);

  ?>

 <form class="form-horizontal" method="post"  enctype="multipart/form-data" style="float: right;">

                                <legend><h4>Edit</h4></legend>

                                <h4>Image</h4>

                                <hr>

                                <div class="control-group">

                                    <label class="control-label" for="inputPassword">

                                        <?php if($row['location'] != ""): ?>

                                        <img src="upload/<?php echo $row['location']; ?>" width="100px" height="100px" style="border:1px solid #333333;">

                                        <?php else: ?>

                                        <img src="images/default.png" width="100px" height="100px" style="border:1px solid #333333;">

                                        <?php endif; ?>

                                    </label>

                                    <div class="controls">

                                        <input type="file" name="image" style="margin-left:27px;">

                                        <button type="submit" name="image" class="btn btn-success" style="margin-top: 20px; margin-right: 131px;">Update</button>

                                    </div>

                                </div>

                                <hr>

                                <h4>Personal Information</h4>

                                <hr>

                                <div class="control-group">

                                    <label class="control-label" for="inputPassword">FirstName:</label>

                                    <div class="controls">

                                        <input type="text" name="fname" required value=<?php echo $row['fname']; ?>>

                                    </div>

                                </div>

                                <div class="control-group">

                                    <label class="control-label" for="inputPassword">MiddleName:</label>

                                    <div class="controls">

                                        <input type="text" name="mname" required value=<?php echo $row['mname']; ?>>

                                    </div>

                                </div>

                                <div class="control-group">

                                    <label class="control-label" for="inputEmail">LastName:</label>

                                    <div class="controls">

                                        <input type="text" name="lname" required value=<?php echo $row['lname']; ?>>

                                    </div>

                                </div>

                                <div class="control-group">

                                    <label class="control-label" for="inputPassword">Address:</label>

                                    <div class="controls">

                                        <input type="text" name="address" required value=<?php echo $row['address']; ?>>

                                    </div>

                                </div>

                                <div class="control-group">

                                    <label class="control-label" for="inputPassword">Email:</label>

                                    <div class="controls">

                                        <input type="text" name="email" value=<?php echo $row['email']; ?>>

                                    </div>

                                </div>

                                

                                 <div class="control-group">

                                    <div class="controls"></p>

<p>                                        <button type="submit" name="update" class="btn btn-success" style="margin-right: 65px;">Save</button>

                                        <a href="index.php" class="btn">Back</a>

                                    </div>

                                </div>

                            </form>

                            

<?php

$id=$_REQUEST['id'];

if (isset($_POST['image'])) {</p>

<p>//image

                            $image = $_FILES["image"] ["name"];

                            $image_name= addslashes($_FILES['image']['name']);

                            $size = $_FILES["image"] ["size"];</p>

<p>move_uploaded_file($_FILES["image"]["tmp_name"],"upload/" . $_FILES["image"]["name"]);            

$location=$_FILES["image"]["name"];</p>

<p>mysqli_query($con, " UPDATE student SET location='$location' WHERE student_id = '$id' ")or die(mysqli_error());

header('location:index.php');

}

?>

                            

                            <?php

                            

                            

                            $id=$_REQUEST['id'];</p>

<p>$result = mysqli_query($con, "SELECT * FROM student WHERE student_id = '$id'");

$test = mysqli_fetch_array($result);

if (!$result) 

        {

        die("Error: Data not found..");

        }

                

                                    $fname= $test['fname'];

                                    $mname= $test['mname'];

                                    $lname= $test['lname'];

                                    $address= $test['address'];

                                    $email= $test['email'];

                

                

                            

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

                               

                                    $fname_save= $_POST['fname'];

                                    $mname_save= $_POST['mname'];

                                    $lname_save= $_POST['lname'];

                                    $address_save= $_POST['address'];

                                    $email_save= $_POST['email'];

                                

mysqli_query($con, "UPDATE student SET fname = '$fname_save' , mname = '$mname_save' , lname ='$lname_save',

address = '$address_save' , email ='$email_save' WHERE student_id = '$id'") or die(mysqli_error());     

//header("Location: index.php");

header('location: <a href="http://localhost/index.php');" target="_blank" rel="noopener noreferrer">http://localhost/index.php');</a>

exit;</p>

<p>                    

                                }

                                ?>

                                </center>

                                </center></p>

<p>                                </div>

                                </div>

                                </div>

                                </div>

                                </div>

                                </div>

                                </div>

                                </div>

                                </div>

</body>

</html></p>

<p>

 

수정하는 소스입니다.

 

저기서 업데이트를 한뒤 header('location:index.php'); 이동을 못하고 에러가 납니다.

데이터는 제대로 수정돼서 DB에 들어갑니다.

 

인터넷 뒤져보니 호스트마다 주소를 넣어야 하기도 한다길래  header('location: http://ID.dothome.co.kr/test/index.php');  이렇게 해도 마찮가지네요.

 

저부분이 문제가 아닌거 같은데..  회원추가 같은건 제대로 동작하거든요..

 

 

수정: 

회원관리 소스 출처 : https://www.happycgi.com/16130

혹시 예제로 쓰기에 좋은 소스가 있다면 소개 부탁드려요..  이 소스는 손볼게 많고 제 입장에선 좀 복잡하네요.

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
3년 전

</p>

<p><span class="token function">header가 사용되기 전에 출력이 있어서는 안됩니다</span></p>

<p>그러니 화일 상단에서 무언가 출력되기 전에 소스가 위치해야 합니다</p>

<p> </p>

<p><span class="token keyword keyword-include">include</span> <span class="token punctuation">(</span><span class="token single-quoted-string string">'header.php'</span><span class="token punctuation">)</span><span class="token punctuation">; <--여기서도 html태그가 있을테니 이 코드 보다 먼저 넣어야 합니다</span></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

타버린나무
3년 전
답변 감사합니다.

원 소스는 잘 되니까 올린게 아니였나보군요.. ㅜㅜ;

검색해보니 스크립트로 강제로 바꿀수 있는데 <script>window.location.href='index.php';</script>

스크립으로 바꾸고선 동작은 잘 되는데... 이렇게 할경우는 어떤 문제가 있을까요?

새해 복 많이 받으세요~~
균이
3년 전
문제 될 것은 없습니다만 위에서 부터 차례로 실행 되는 것이니 좋은 코드가 될 수 없습니다
수정하기전에 $query=mysqli_query~~~ 이런 쿼리를 실행하고 되고
body 이하 html을 출력하다가 갑자기 디비 update 작업을 하고 곧바로 다른 페이지로 이동 하게
되니 쓸데없는 동작을 더 하게 되죠
타버린나무
3년 전
답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인